2013-08-01 55 views
0

我正在使用phonegap,我想爲移動設備和web(例如桌面Chrome)使用相同的代碼設置Google oauth。最終結果應該是客戶端的應用引擎cookie(無論是inapp瀏覽器還是桌面瀏覽器)。oauth桌面和移動使用相同的代碼

由於我不希望我的用戶多次執行同意屏幕,因此我需要一個refresh_token,而不僅僅是一個access_token。 (也注意到cordova webview沒有像常規瀏覽器那樣訪問cookie)

據我所知,只有在您爲web服務器推薦的協議時纔會收到refresh_token,意思是第一個獲取代碼,然後使用它來獲取access_token和refresh_token。

當我以這種方式進行身份驗證時,協議要求我將收到的代碼發送到谷歌以接收訪問令牌,但這是跨域請求,並且在桌面瀏覽器上被阻止。

如何方便地解決這個問題?什麼是實現最終結果的正確方法?

回答

0

我粗暴地解決了我的問題,使用我的服務器作爲跨域請求的中介。

所以流程就像這樣:我使用彈出窗口獲得驗證碼。然後用戶輸入代碼並將我的JavaScript發送到我的服務器。然後,服務器向google發送一個access_token和refresh_token的請求,並將其發回給用戶。

似乎現在工作良好,而且不是很複雜。