2012-09-13 52 views
0

我一直在嘗試學習OAuth(1.0),並試圖通過訪問Google上的聯繫人來測試我的代碼。這很容易,因爲我不必建立朋友/消費者關係(Google只允許匿名/匿名用於消費者令牌),並且因爲Google有OAuth Playground來幫助我。Google OAuth 1.0 - 將範圍端口設置爲443(AuthSub令牌有錯誤範圍)

所以我把我的代碼,如下所示去

一切似乎都與進展順利 - 我的請求令牌沒問題,授權很好,並且能夠獲得訪問令牌。然後我試圖讓一個請求https://www.google.com/m8/feeds/contacts/default/full/

唯一的問題是,我不斷收到此錯誤:「401:AuthSub憑證有錯誤的範圍」

我很困惑這個,因爲當我與提出同樣的要求在OAuth Playground中相同的消費者信息(http://googlecodesamples.com/oauth_playground/index.php)一切都可以正常工作。

最後,我發現了以下問題:HTTP/1.1 401 Token invalid - AuthSub token has wrong scope

頂端回答使我對我的解決方案 - 在我使用已寫入始終將端口443 HTTPS或JAR文件的一個有代碼80爲http。當我通過我的代碼並將端口更改爲-1時,我的請求運行良好,我能夠獲取我想要的信息。

不幸的是,我無法更改JAR文件中的代碼,所以我將不得不在我的最後解決問題。在回答這個問題,「喬納森說:

Another workaround would be to include the :443 in the token scope; it just has to match

我試圖改變我的請求令牌查詢字符串?scope=https%3A%2F%2Fwww.google.com **%3A443** %2Fm8%2Ffeeds%2F和谷歌剛剛拒絕給我一個請求令牌 - 它給了我一個400錯誤說Invalid scope: https://www.google.com:443/m8/feeds/。將https更改爲http並沒有做任何事情。我將如何處理喬納森(誰近一年沒有上網)的建議?

+0

你使用哪個罐子自動附加端口?看起來這就是絆倒你的部分...... –

+0

這是讓我絆倒的部分,但是沒有辦法解決這個問題。不知何故,我必須與它合作,並且需要了解如何做到這一點。 –

回答

0

谷歌的授權範圍是URL的事實基本上是學術性的 - 它們實際上並沒有提供任何有用的東西(see for yourself),所以添加一個端口只會混淆Google。所以喬納森的建議是不正確的。

他們甚至看起來像URLs的唯一原因是它們可以被期望是普遍獨特的(即使這只是可以證明的真實性)。

所以不要把:443放在你的認證範圍內。

+0

有趣;然而,我原來的認證範圍沒有:443,但後來我得到了401錯誤。 我注意到你在Google工作,你可能會告訴我更多關於Google如何處理這個範圍的問題,所以我可以試着瞭解我在特定情況下需要如何配置它? –