2014-05-20 15 views
5

tôi đang cố gắng để có được thẻ truy cập từ OAuth.io đối với bất kỳ nhà cung cấp Google dựa tuy nhiên bất cứ khi nào tôi xác nhận tôi nhận được một access_token nhưng không refresh_token. Tôi đã chọn ngoại tuyến cho access_type nhưng vẫn không có niềm vui.Bắt thẻ làm mới từ Google với OAuth.io

Tôi đã cố gắng tìm kiếm thông qua các tài liệu cho một giải pháp nhưng nó hầu như không bao gồm bất cứ điều gì liên quan đến dấu hiệu làm mới.

Trả lời

10

Để có mã thông báo làm mới từ Google, bạn cần 2 điều:

  • Các tùy chọn ẩn cf https://developers.google.com/accounts/docs/OAuth2WebServer

    "Một dấu hiệu có thể được sử dụng để nhận mã truy cập mới. Làm mới thẻ có giá trị đến khi người dùng hủy bỏ quyền truy cập. trường này chỉ xuất hiện nếu access_type = ẩn được bao gồm trong yêu cầu mã ủy quyền."

  • Tùy chọn approval_prompt thiết lập để "lực lượng" cf https://developers.google.com/accounts/docs/OAuth2WebServer

    "Quan trọng:. Khi ứng dụng của bạn nhận được một mã thông báo làm mới, điều quan trọng là để lưu trữ mà refresh thẻ để sử dụng trong tương lai Nếu ứng dụng của bạn mất thẻ làm mới, nó sẽ phải làm lại nhắc nhở người dùng cho sự đồng ý trước khi có được một refresh token. Nếu bạn cần phải nhắc nhở người dùng cho sự đồng ý, bao gồm các thông số approval_prompt trong yêu cầu mã ủy quyền, và thiết lập giá trị để buộc . "

nên kịch bản của bạn sẽ giống như

OAuth.popup('google', { 
    authorize: { 
     approval_prompt: 'force' 
    } 
}).then(function(google) { 
    console.log(google.refresh_token) 
    //send the refresh token to your server 
}) 

Nếu bạn đang làm việc client-side (Javascript/iOS/Android/PhoneGap), bạn cũng có thể cần phải kích hoạt tùy chọn sau đây: Send refresh token to front-end trong bảng điều khiển OAuth.io> General> tùy chọn nâng cao cho phép SDK phía khách hàng của bạn để lấy refresh thẻ

https://jsfiddle.net/Lqyc5jpw/

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