3

在 Google+ 上,我需要访问用户的时间线。我使用以下代码进行身份验证:

private string GetUrl(string url, Dictionary<string, string> parameters)
        {
            if (parameters.Count == 0)
            {
                return url;
            }

            string query_string = String.Empty;
            foreach (var k in parameters)
                query_string += k.Key + "=" + (k.Value) + "&";

            query_string = query_string.TrimEnd('&');

            return url + "?" + query_string;
        }

var req = GetUrl(auth_endpoint, new Dictionary<string, string>()
            {
                { "response_type", "code" },
                { "client_id", "XXXXXX.apps.googleusercontent.com" },
                { "redirect_uri", "http://localhost:58772/GooglePlus.aspx" },
                { "scope", "https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/plus.me" },
                { "state", "authenticated" },
            });

            Response.Redirect(req);

但是,当我使用“授权:承载 XXXX”标头请求https://www.googleapis.com/oauth2/v1/userinfo API 时,出现以下错误。

{
 "error": {
  "errors": [
   {
    "domain": "com.google.auth",
    "reason": "invalidAuthentication",
    "message": "invalid token",
    "locationType": "header",
    "location": "Authorization"
   }
  ],
  "code": 401,
  "message": "invalid token"
 }
}

使用“curl”发出请求也会发生同样的情况。我复制并粘贴了谷歌给出的身份验证码很多时间......结果相同。验证码如下所示:4/XXX-XXXXXXXXXXXXXXX.XXXXXXXXXXXXX_XXXXXX

我该如何解决?谢谢

4

1 回答 1

0

这可能是因为用于验证令牌的 url 错误。有同样的问题。试试这个网址:- https://www.googleapis.com/oauth2/v3/tokeninfo?id_token=<token>。希望能帮助到你。

于 2016-08-24T09:16:58.623 回答