0

したがって、1つの問題を除いて、基本的にこれは機能しています。ドメインの連絡先にアクセスできるように、Google サービス アカウントをセットアップしました。そして、バッチクエリを完全に行うことができます!

しかし、cr.Retrieve("some-contact-url-here") を呼び出すと、Refresh トークンがないことを示すエラーがスローされます。ただし、サービス アカウントを使用しているため、認証時に更新トークンを取得できません。

また、サービス アカウントの更新トークンを取得する方法について、適切な答えが見つからないようです。サービス アカウントで更新トークンを取得することについて積極的に言及している 1 つまたは 2 つのスタックオーバーフローの投稿がありますが、リンク先はリダイレクトされています。私がリフレッシュ トークンと関係があるとわかった他のことは、基本的に手動で認証し、トークンを保存することでした。サービス アカウントを使用する必要があるため、それは不可能です。

4

2 に答える 2

0

わかりました。API に対して数時間頭を激しくぶつけた結果、サービス アカウントとして認証しているときに更新トークンを取得する方法は基本的にないようです。予想される動作です。

とにかく、この問題を回避するには、すべての連絡先をメモリに読み込むことができます。

feed.AutoPaging = true;
foreach (var c in feed.Entries)
{
    contactList.Add(c);
}

その後、更新|削除|などを行うことができます。とてつもなく非効率ですが。特に連絡先リストがかなり大きくなった場合。

于 2015-06-10T21:32:10.067 に答える
0

Google Developers Console から取得するサービス アカウントの認証情報には、生成された一意のメール アドレス、クライアント ID、および少なくとも 1 つの公開鍵と秘密鍵のペアが含まれます。クライアント ID と 1 つの秘密鍵を使用して署名付き JWT を作成し、適切な形式でアクセス トークン リクエストを作成します。その後、アプリケーションはトークン リクエストを Google OAuth 2.0 認可サーバーに送信し、アクセス トークンが返されます。アプリケーションは、トークンを使用して Google API にアクセスします。トークンの有効期限が切れると、アプリケーションはプロセスを繰り返します。

詳細については、このページを確認してください。

于 2015-06-10T20:46:22.947 に答える