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
どうすれば解決できますか?ありがとうございました