2012-02-04 75 views
1

我試圖在OAuth 1.0和2.0版本中訪問Google的API,在兩種情況下,我需要在值爲'OAuth'的標頭中填充授權字段,然後是訪問令牌。我嘗試了以下方法,但Google向我發出一個錯誤,指出Authorization標頭值存在問題。我使用Python的龍捲風如何在OAuth 2.0中使用Google API傳遞「授權」標頭值

additional_headers = { 
     "Authorization": "OAuth "+GoogleOAuth2Mixin.access_token, 
     "Accept-Encoding": None 
    } 
    h = httputil.HTTPHeaders() 
    h.parse_line("Authorization: OAuth "+GoogleOAuth2Mixin.access_token) 
    request = httpclient.HTTPRequest(self._USER_INFO_URL+"?access_token="+GoogleOAuth2Mixin.access_token, method="GET", headers=h) 
    self.httpclient_instance.fetch(
     request, 
     self.async_callback(callback) 
    ) 

我試着用這兩種方法,通過傳球頭球「H」和「additional_headers」,但它不工作。什麼是準確的方法?

+0

你得到了什麼確切的錯誤? – Drahkar 2012-02-04 22:34:36

+0

這是錯誤我看到: { 「錯誤」:{ 「錯誤」:[{ 「域」: 「com.google.auth」, 「原因」: 「invalidAuthentication」, 「消息「: 「無效的標記」, 「的locationType」: 「首標」, 「位置」: 「授權」 } ], 「代碼」:401, 「消息」: 「無效的標記」 } } – 2012-02-04 22:45:35

+0

我在成功驗證後發現此錯誤 - https://www.googleapis.com/oauth2/v1/tokeninfo – 2012-02-04 22:49:50

回答

0

這是因爲它使用帳戶電子郵件地址作爲UID,並且它在認證流程期間默認調用userinfo服務,因此您需要在您的作用域列表中包含「userinfo.email」,否則認證流程將引發異常並且未能返回令牌。

如果您使用的是OAuth 2.0 playground,請確保在選擇並授權左邊欄上的API以及您要使用的API下的「Userinfo-Email」。希望這可以幫助。

7

我有同樣的問題。如果包含「承載」作爲前綴,它將起作用。

Authorization: Bearer 0b79bab50daca910b000d4f1a2b675d604257e42 
+0

這個答案爲我解決了這個問題。謝謝 – 2016-07-28 14:37:57