3

必要な権限を持つ認証トークンを取得した後、ユーザーのタスクにアクセスしようとしています。

リクエスト URL:

https://www.googleapis.com/tasks/v1/lists/%40default/tasks?key={YOUR_API_KEY}

リクエストを行うコード:

    public void FetchTasks(string url)
    {
        var httpWebRequest = HttpWebRequest.CreateHttp(url);
        httpWebRequest.BeginGetResponse(new AsyncCallback(FinishedWebRequest), httpWebRequest);
    }

    private void FinishedWebRequest(IAsyncResult ar)
    {
        var httpWebRequest = ar.AsyncState as HttpWebRequest;
        var httpWebResponse = (HttpWebResponse) httpWebRequest.EndGetResponse(ar);
        byte[] responseByteArray= new byte[200];
        httpWebResponse.GetResponseStream().Read(responseByteArray, 0, responseByteArray.Length);
    }

応答

    {
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "required",
    "message": "Login Required",
    "locationType": "header",
    "location": "Authorization"
   }
  ],
  "code": 401,
  "message": "Login Required"
 }
}

URL の認証トークンとともに、要求ヘッダーの一部として他に何か必要ですか?

4

1 に答える 1

4

タスクにアクセスするユーザーに対してAuthorization有効な HTTP ヘッダーを設定する必要があります。access_tokenOAuth 2.0 ダンスを完了し、有効な を持っていると仮定すると、次のようaccess_tokenに変更してヘッダーを設定できます。FetchTasks()

public void FetchTasks(string url, string accessToken)
{
    var httpWebRequest = HttpWebRequest.CreateHttp(url);
    request.Headers.Add("Authorization", "Bearer "+accessToken);
    httpWebRequest.BeginGetResponse(new AsyncCallback(FinishedWebRequest), httpWebRequest);
}

また、HTTP を使用して API に直接アクセスしているようです。OAuth 2.0 トークンの管理は少し面倒な場合があります。公式の Google .NET API クライアント ライブラリを使用して調査することをお勧めします。これにより、多くの手間がかかります。

于 2013-01-06T04:38:32.240 に答える