0

asp.net Web アプリケーションで Gmail の連絡先にアクセスしようとしています。

それでも、Google から access_token を取得できますが、この access_token を Google 連絡先 API に送信すると、エラーが発生します。

以下は、アプリケーションからリダイレクトし、ユーザーが電子メールとパスワードを入力して認証する URL です。

https://accounts.google.com/o/oauth2/auth?scope=https://www.google.com/m8/feeds&redirect_uri=http://localhost:3223/WebSite1/Default.aspx&response_type=token&client_id=881595232473.apps.googleusercontent.com

このユーザーがアクセス トークンを使用して Web アプリケーションに戻った後。

ここでは、すべての連絡先を取得するために 2 つの異なる方法を使用しました。

方法 1 - Web リクエスト:

     HttpWebRequest request1 = (HttpWebRequest)WebRequest.Create(url1);

    HttpWebResponse response1 = (HttpWebResponse)request1.GetResponse();

    System.IO.Stream ReceiveStream1 = response1.GetResponseStream();
    StreamReader readStream1 = new StreamReader(ReceiveStream1);
    string result = readStream1.ReadToEnd();

正常に動作し、結果が XML になります。しかし、問題は、合計 246 の連絡先があるのに、最初の 25 の連絡先しか表示されないことです。

方法 2 - Google Contact API :

           RequestSettings rs = new RequestSettings("aman contact", Request.QueryString["access_token"].ToString());

    rs.AutoPaging = true;
    ContactsRequest cr = new ContactsRequest(rs);
    PrintAllContacts(cr);
    Feed<Contact> f = cr.GetContacts();

ここで、次のエラーが表示されます:

Execution of request failed: http://www.google.com/m8/feeds/contacts/default/full

この後、次のエラーを含むイエローページが表示されます:

The remote server returned an error: (401) Unauthorized.
4

1 に答える 1

1

.Net を使用して Google Contacts API と統合したことがないため、方法 1 - Web リクエストに関する質問についてのみコメントできます。

の値を渡すことをお勧めしますmax-query(デフォルトでは 25 です)。私の経験では、API から約 500 の連絡先を取得するのに 1 秒もかからないため、特定のアドレス帳を一度に安全に照会できるはずです。ただし、この値はアプリケーションの要件に合わせて調整する必要があります。たとえば、アプリケーションの応答性を高める必要がある場合は、この値を小さくして、連絡先の入力をより迅速に開始できるようにすることができます。この作業をバックグラウンドで実行している場合は、5000 件の連絡先を 5 秒間待機しても問題ない場合があります。

アドレス帳のサイズは人によって大きく異なるため、パラメーターを使用して API を複数回クエリできる必要がありstart-indexます。最初のクエリの後、ここで返される値を見てください。

  <openSearch:totalResults>1</openSearch:totalResults>
  <openSearch:startIndex>1</openSearch:startIndex>
  <openSearch:itemsPerPage>25</openSearch:itemsPerPage>

total-resultsstart-indexすべてのデータを取得するために別のクエリを実行する必要がある回数を計算できます。

Google Contacts API (v3) では、これらのパラメータについて説明しています。警告の言葉として、start-indexページ インデックスではなく、連絡先の配列への 1 ベースのインデックスであるため、計算を行う必要があります。たとえばmax-query=25&start-index=26、連絡先のページ 2 へのアクセスを要求します。

于 2012-10-18T17:54:04.913 に答える