2015-04-17 69 views
1

我正嘗試創建一個Chrome擴展程序,用戶可以使用其Google帳戶登錄。我已將其基於此示例代碼:https://developers.google.com/+/quickstart/javascript,它得到的最多爲gapi.auth2.init,但隨後的Error: redirect_uri_mismatch發生了400個錯誤。客戶端ID已被正確註冊。使用G +登錄的Chrome擴展程序 - redirect_uri_mismatch

由於redirect_uri錯誤,API調用失敗,但是我爲擴展設置了什麼URI?該API調用時像這樣:

gapi.auth2.init({ 
    fetch_basic_profile: false, 
    client_id: '1234_valid_id_1234', 
    cookie_policy: 'none', 
    redirect_uri: 'xxx', 
    scope:'https://www.googleapis.com/auth/plus.login' 
    }).then(

「XXX」作爲URI僅僅是一個例子,我試過的衆多選擇在這裏,無濟於事。

該擴展將加載一個對話,就好像它將開始認證過程,但隨後出現400錯誤。我不明白什麼URI擴展應該提供作爲回調在這裏,當然這不適用?

客戶端ID等是好的 - 如果我只是在一個標準的本地主機網站上運行示例JS代碼它一切正常,它只是當試圖在它打破的擴展中使用它,因爲缺乏回調URI 。

+0

您必須放置'postmessage'而不是實際的URI。請參閱:http://stackoverflow.com/questions/11485271/google-oauth-2-authorization-error-redirect-uri-mismatch和http://stackoverflow.com/questions/17954086/google-oauth2-authorizing-oauth -token-error-redirect-uri-mismatch/17976227#17976227 – gui47

+0

這沒有什麼區別。無論我改變redirect_uri,我總會看到redirect_uri設置爲「storagerelay:// chrome-extension/appidinhere?id = auth963268」時返回的錯誤。我似乎無法覆蓋這一點,我不知道什麼sotragerelay或它來自哪裏。 – artparks

+0

你有沒有找到相同的解決方案? – pd176

回答

1

https://developers.google.com/identity/sign-in/web/reference gapi.auth2.init不採用redirect_uri參數。

只有使用redirect_uri的函數是grantOfflineAccess。 redirect_uri =「postmessage」應該始終有效。

var auth2 = gapi.auth2.init({ 
    fetch_basic_profile: false, 
    client_id: '1234_valid_id_1234', 
    cookie_policy: 'none', 
    scope:'https://www.googleapis.com/auth/plus.login' 
}); 

// on user click 
auth2.grantOfflineAccess({'redirect_uri': 'postmessage'}).then(
    function(resp) { 
    var auth_code = resp.code; 
    }); 
+0

我不明白的是,錯誤顯示了重定向uri:redirect_uri = storagerelay:// chrome-extension/12345?id = auth82093即使我在auth2.init中調用的對象中指定postmessage - 無論我改變它的價值仍然顯示這個redirect_uri在失敗?! – artparks

+0

這是Google方面的一個錯誤。我已經報道過,我會告訴你什麼時候它會被修復。抱歉,添麻煩了。 –

+0

謝謝。請讓我知道你在哪裏舉辦票。 – artparks