2012-07-03 44 views
3

在Google+上我需要訪問用戶的時間表。 我用下面的代碼進行驗證:Google+ OAuth authorizaton錯誤(無效標記)

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

但是,當我要求使用的https://www.googleapis.com/oauth2/v1/userinfo API的授權:承載XXXX「頭,我碰到下面的錯誤。

{ 
"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_XXXXX

我該如何解決? 謝謝

+1

爲什麼要將「.apps.googleusercontent.com」添加到客戶端ID? –

+0

您從谷歌收到的授權碼只能使用一次。您可以使用https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=INSERT_ACCESS_TOKEN API來查看您的訪問令牌是否有效? –

回答

0

這可能是因爲用於驗證令牌的URL錯誤而發生的。有同樣的問題。試試這個網址: - https://www.googleapis.com/oauth2/v3/tokeninfo?id_token=<token>。希望能幫助到你。