【问题标题】:How to use Auth Token to fetch Google Tasks (REST API) on Windows phone如何在 Windows 手机上使用 Auth Token 获取 Google Tasks (REST API)
【发布时间】:2012-12-03 15:23:16
【问题描述】:

在获得具有所需权限的身份验证令牌后,我正在尝试访问用户的任务。

请求网址:

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 中的身份验证令牌之外,我还需要其他任何内容作为请求标头的一部分吗?

【问题讨论】:

    标签: c# rest oauth google-api windows-phone-8


    【解决方案1】:

    您需要将Authorization HTTP 标头设置为您想要访问其任务的用户的有效access_token。假设您已完成 OAuth 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 令牌可能有点麻烦,您可能需要使用 official Google .NET API client library 进行调查,它会为您处理很多繁重的工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-26
      • 1970-01-01
      • 1970-01-01
      • 2020-05-26
      • 1970-01-01
      • 2019-07-20
      相关资源
      最近更新 更多