2014-11-17 18 views
6

Tôi đang sử dụng GoogleAuthUtil trong Google Play Services trên Android. Sau khi gọi số GoogleAuthUtil.getToken(context, userName, scope), tôi nhận được mã thông báo như sau:Cách nhận refreshToken khi sử dụng GoogleAuthUtil

ya29.wQBWztab5kcgMLcMbAI0LwFzHC_DPrxauSWbX4P6KOnBEOgjcm9V7OI9AFr6JGxDY54gP00RemzzgML56_gWRHn8Q5jK16BLY-0y83Gc5vfe3xN-QpyM4d7z 

Đây là access_token, có thể được sử dụng để gọi Google Apis. Sau đó, làm cách nào tôi có thể nhận mã thông báo làm mới để làm mới access_token này, vì tôi cũng sử dụng Google oauth java libraryYouTube Java Library trong dự án Android của mình, tôi muốn sử dụng hai thư viện này để duy trì/quản lý các giá trị access_token, refresh tokenexpires_in. (Khi sử dụng thư viện java oauth của Google, số điện thoại TokenResponse được trả lại chứa access_token, refresh tokenexpires_in)

Cảm ơn bạn trước.

Trả lời

2

Bạn không thể trực tiếp làm mớiSử dụng bằng cách sử dụng GoogleAuthUtil.getToken() nhưng nếu bạn gọi getToken() mỗi khi bạn gặp lỗi 401, GoogleAuthUtil sẽ trả lại mã thông báo hợp lệ mới nếu cần.

+0

có thể xây dựng trên đó? Có lẽ một liên kết hữu ích về cách xử lý này? – dVaffection

+0

Rất tiếc, không thể nhớ chi tiết về điều này nữa: - /. Tôi nhớ tìm cách để có được một refresh_token nhưng không tìm thấy một vì vậy tôi chỉ gọi là 'getToken' như mô tả ở đó: https://developers.google.com/android/guides/http-auth – mbonnin

2

Để nhận mã làm mới, đảm bảo rằng phạm vi của bạn có định dạng sau:

Account account = new Account(mEmail, GoogleAuthUtil.GOOGLE_ACCOUNT_TYPE); 
mScope="oauth2:server:client_id:"+ OAUTH_WEBCOMPONENT_ID+":api_scope:"+"https://www.googleapis.com/auth/userinfo.email"; 
return GoogleAuthUtil.getToken(mActivity, account, mScope); 

này sẽ cung cấp cho bạn một mã số cho phép, có thể được gửi đến thành phần web của bạn.

Thành phần web của bạn so với chỉ có thể sử dụng mã ủy quyền này một lần để nhận mã thông báo truy cập và mã thông báo làm mới với mã này. Bạn phải lưu mã thông báo làm mới trong cơ sở dữ liệu của mình, để khi mã truy cập không còn hợp lệ, bạn có thể nhận mã thông báo truy cập mới khi cần.

POST /oauth2/v3/token HTTP/1.1 
Host: www.googleapis.com 
Content-length: 233 
content-type: application/x-www-form-urlencoded 
user-agent: google-oauth-playground 

code=4%2FVL2YMuPMheOP2-0vyKBSfGd-4er5GsMY17Ecp8ITK4U&redirect_uri=https%3A%2F%2Fdevelopers.google.com%2Foauthplayground&client_id=407408718192.apps.googleusercontent.com&client_secret=************&scope=&grant_type=authorization_code 

Bạn có thể mô phỏng cách làm việc này ở đây:

https://developers.google.com/oauthplayground/

Các vấn đề liên quan