我使用Python爲Google App Engine實現了experimental OAuth support,並使其在本地工作,但端點在部署到appspot時拋出400。Google App Engine OAuth端點在生產中投擲400
例如,http(s)://my-app.appspot.com/_ah/OAuthGetRequestToken返回400,但本地URL模式的行爲與預期相同。
我已經嘗試了http和https,並假定appspot處理ssl證書。
UPDATE
我一直在使用OAuth Playground來測試我的代碼。儘管文檔,似乎註冊您的應用程序是必需的。有關如何註冊的說明,請登錄here。根據註冊過程中的文檔,在App Engine上運行時不需要證書。遊樂場正在顯示錯誤的更多細節 - 「簽名無效」。如果我理解正確,簽名是從簽名基礎字符串生成的。在這種情況下,我使用基本字符串7DYB6MJ2s-IQcd7VJYJUmcct。
GET /accounts/OAuthGetRequestToken?scope=https%3A%2F%2Fmail.google.com%2Fmail%2Ffeed%2Fatom HTTP/1.1
Host: www.google.com
Accept: */*
Authorization: OAuth oauth_version="1.0", oauth_nonce="168cfd60a93a46caa38dddfdcedd9de9", oauth_timestamp="1305315895", oauth_consumer_key="xxxxxxx.appspot.com", oauth_callback="http%3A%2F%2Fgooglecodesamples.com%2Foauth_playground%2Findex.php", oauth_signature_method="HMAC-SHA1", oauth_signature="4J5faUujE0VNaybyvFCiEPY7DQ8%3D"
HTTP/1.1 400 Bad Request
Content-Type: text/plain; charset=UTF-8
Date: Fri, 13 May 2011 19:44:55 GMT
Expires: Fri, 13 May 2011 19:44:55 GMT
Cache-Control: private, max-age=0
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Content-Length: 451
Server: GSE
**signature_invalid**
base_string:GET&https%3A%2F%2Fwww.google.com%2Faccounts%2FOAuthGetRequestToken&oauth_callback%3Dhttp%253A%252F%252Fgooglecodesamples.com%252Foauth_playground%252Findex.php%26oauth_consumer_key%3Dxxxxxx.appspot.com%26oauth_nonce%3D168cf60a94caa38e2defdcedd9de9%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1305315895%26oauth_version%3D1.0%26scope%3Dhttps%253A%252F%252Fmail.google.com%252Fmail%252Ffeed%252Fatom
最後更新
有兩件事情引起了400首先,應用程序未註冊。谷歌的文件說這是可選的,但顯然並非如此。其次,請求沒有正確簽署。 下面是一個極好的調試工具來測試您的OAuth請求:Oauth Playground
您是否嘗試轉儲(或記錄)400響應文本?通常所有的服務提供商都會在400條代碼中給出更多含義的全面信 – Jeyara 2011-05-10 02:59:47
不幸的是,響應文本是標準400描述,儀表板不記錄請求到任何三個OAuth端點(我認爲這意味着請求正在我的應用程序範圍外處理)。 – 2011-05-10 03:18:34
你只有27個代表,你最近怎麼樣做+200代表? – contactmatt 2011-05-12 20:39:33