1

我試圖從我的android客戶端 - 使用身份驗證訪問使用python中的雲端點構建的我的appengine後端。來自android:Oauth框架用戶的雲端點身份驗證與oauth令牌用戶不匹配

認證工作正常,從API瀏覽器。

在Android方面,我使用的是這裏所描述的憑據/帳戶選擇器方法:https://developers.google.com/appengine/docs/python/endpoints/consume_android

但是從Android客戶端訪問時,在AppEngine上的日誌我得到如下:

「的Oauth框架用戶與oauth令牌用戶不匹配。「

而在這之前有這樣的警告:

「id_token驗證失敗:。無法加載pycrypto庫無法驗證id_token簽名見http://www.pycrypto.org欲瞭解更多有關」

+0

爲了幫助任何其他人可能最終在這裏 - 我修復了同樣的錯誤(但不是Android相關 - 正在滾動我自己的OAuth身份驗證),有兩件事:1.將App Engine的Google身份驗證設置更改爲「Google Accounts API」,而不是「Google Apps Domain」,以及2.使用HTTP頭'授權:承載<訪問令牌在此>「而不是」?access_token = <訪問令牌在此>「查詢字符串參數 –

回答

4

當您正在訪問GAE應用來自Android客戶端的雲終端,它將使用ID令牌。因此,如果您收到警告Oauth framework user didn't match oauth token user,那麼您必須在id_token驗證中看到某些失敗並看到一些警告,如id_token verification failed. Checking for oauth token.請檢查您的endpoints.get_current_user()方法在此情況下是否返回None,然後檢查驗證部分中是否有任何錯誤。

這篇文章詳細解釋了ID tokens和這個職位說明了limitations in knowing User_id when using ID tokens and the possible workarounds

編輯::根據上開Stavginski的建議

至於建議的最終方案如下,當出現的OAuth框架警告被認爲是id_token驗證中出現一些錯誤。因此,根據修改的問題,日誌有id_token verification failed: Unable to load pycrypto library這需要將pycrypto庫添加到app.yaml,然後id_token失敗將被解決,並且不會出現與oauth相關的警告。

+0

您絕對讓我朝着正確的方向..我沒有提到,我得到這個警告:id_token驗證失敗:無法加載pycrypto庫。無法驗證id_token簽名。因爲它繼續後,我不知道這是真正的問題。我將編輯我的問題以反映這一點。 –

+1

具體的解決方案是將appcrypto庫添加到app.yaml - doh。要編輯您的答案以反映該問題嗎? –

+0

很高興知道這個問題已經解決,我可以得到任何幫助。我已經更新了答案,以包含您的最終解決方案,以便該帖子可以成爲有用的參考 –

相關問題