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);

しかし、'Authorization: Bearer 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」を使用してリクエストを行うと、同じことが起こります。Googleから提供された認証コードを何度もコピーして貼り付けました...同じ結果です。認証コードは次のようになります: 4/XXX-XXXXXXXXXXXXXXX.XXXXXXXXXXXXXXX_XXXXX

どうすれば解決できますか?ありがとうございました

4

1 に答える 1

0

これは、トークンの検証に間違った URL が使用されているために発生する可能性があります。同じ問題がありました。この URL で試してください :- https://www.googleapis.com/oauth2/v3/tokeninfo?id_token=<token>。それが役に立てば幸い。

于 2016-08-24T09:16:58.623 に答える