2013-07-19 78 views
0

我使用的是oauth 1.0,直到現在我可以成功從Google獲取訪問令牌。 但是,當我想要從https://www.google.com/m8/feeds/contacts/default/full中檢索用戶聯繫人時,它將返回401錯誤並且無需進一步解釋。谷歌聯繫人Api - 401訪問時發生錯誤用戶聯繫人

我發現Google操場的信息可能並不準確,例如步驟3和步驟5中的簽名基本字符串包含oauth_version,但它是錯誤的。 (如果您有oauth_version,它將返回signature_invalid,不包括oauth_version)

這是我的要求:

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(sbGetContacts.ToString()); 
     req.Method = "GET"; 
     req.Headers.Add(authHeader); 
     HttpWebResponse res = (HttpWebResponse)req.GetResponse(); 

這是我的頭:

 string authHeader = "Authorization: OAuth " + 
     "oauth_version=" + "\"" + "1.0" + "\"" + "\"," + 
     "oauth_nonce=" + "\"" + nonce + "\"," + 
     "oauth_timestamp=" + "\"" + timeStamp + "\"," + 
     "oauth_consumer_key=" + "\"" + GoogleconsumerKey + "\"," + 
     "oauth_token=" + "\"" + OauthToken+ "\"," + 
     "oauth_signature_method=" + "\"" + "HMAC-SHA1" + "\"," + 
     "oauth_signature=" + "\"" + UpperCaseUrlEncode(sig) + "\""; 

人告訴我如何解決這個問題?

回答

0

OAuth1是deprecated(谷歌)。請不要花費任何精力用OAuth1編寫新代碼。使用OAuth2,沒有簽名和加密。 您是否有理由需要使用OAuth1?我們想知道。我在Google上開發OAuth。

0

其實:

如果你的應用有某些特殊授權要求,如在同一時間登錄爲請求數據訪問(混合) 或權威的全域委託(2LO),然後 您目前不能使用OAuth 2.0令牌。在這種情況下,您必須改用 OAuth 1.0令牌和API密鑰。您可以在Google API控制檯中找到應用程序的API 密鑰,位於 API訪問面板的簡單API訪問部分。

根據https://developers.google.com/google-apps/contacts/v3/?hl=fr

所以你需要通過一個API密鑰。您可以這樣做:將key ='YOUR_API_KEY'添加到URL ,但如果您使用的是gdata客戶端庫,如何傳遞API密鑰?

+0

我打這個網址https://www.google.com/m8/feeds/contacts/default/full,並嘗試使用電子郵件替換默認關鍵字相同的網址......但我得到沮喪的401錯誤..... –