2015-07-01 18 views
10

Tôi đang cố truy cập mã thông báo truy cập & mã thông báo làm mới bằng OAuth.io dành cho nhà cung cấp của Google. Tôi đã chọn ngoại tuyến cho access_type trong OAuth.io.Nhận mã thông báo làm mới từ Google với OAuth.io JS SDK (Phía máy khách)

Tiếp theo là mã

OAuth.popup("google", {'authorize' : { "approval_prompt" : 'force'}}) 
    .done(function(result) { 
     console.log(result); 
    }) 
    .fail(function (err) { 
     //handle error with err 
     console.log(err); 
    }); 

tôi không nhận được refresh_token trong các phản ứng. Tôi chỉ nhận được access_token từ phản hồi.

phản ứng JSON cho access token là:

{ 
     "status": "success", 
     "data": { 
      "access_token": "ya29.pAGQWe3yxxxxxx", 
      "token_type": "Bearer", 
      "expires_in": 3600, 
      "request": { 
       "url": "https://www.googleapis.com", 
       "headers": { 
        "Authorization": "Bearer {{token}}" 
       } 
      }, 
      "id_token": "eyJhbGciOiJSUzIxxxxxxxx" 
     }, 
     "state": "Q9nfocQXJxxxx", 
     "provider": "google" 
    } 

Reference

Tôi đã tìm thấy này SO liên kết Getting refresh tokens from Google with OAuth.io Ở đây họ đã giải thích làm thế nào để nhận mã thông báo làm mới trong phía máy chủ.

Tôi muốn nhận mã thông báo làm mới ở phía máy khách JS.

+0

Bạn có thể không vượt qua nó từ máy chủ cho khách hàng? – winhowes

Trả lời

2

Chuyển đến OAuth.io ứng dụng trang cài đặt chung, chọn Show advanced options và sau đó chọn Gửi thẻ refresh để front-end.

Trong các API tích hợp, hãy chọn access_typengoại tuyến. Điều này sẽ gửi mã thông báo refresh để kết thúc trước khi sử dụng đoạn mã sau

var oauthOptions = { 'authorize' : { "approval_prompt" : "force" } }; 
    OAuth.popup("google", oauthOptions) 
       .done(function(result) { 
        console.log("Post postProcessing"); 
        console.log(result); 
       }) 
       .fail(function (err) { 
        console.log(err); 
       }); 

enter image description here

-1
  1. Go Security Settings Account và nhấp vào chỉnh sửa
  2. https://www.google.com/settings/u/1/security.
  3. bên cạnh "Cấp phép ứng dụng và trang web". Sau đó, nhấp vào "Thu hồi
  4. Quyền truy cập" bên cạnh ứng dụng của bạn. Yêu cầu OAuth2 tiếp theo mà bạn thực hiện sẽ
  5. trả về refresh_token.

Bạn cũng có thể chơi với mở Oauth Here

+0

Tôi đã thu hồi quyền đối với ứng dụng của mình. Sau đó, tôi bắt đầu OAuth, tôi không nhận được refresh_token – Valarpirai

0

Hãy thử thay đổi dòng đầu tiên:

OAuth.popup("google", { 
    'authorize' : { 
    "approval_prompt" : "force", 
    "access_type" : "offline"}}) 

Google's docs mô tả cách ẩn refresh mã thông báo làm việc.

+0

Tôi đã thử với access_type: "ngoại tuyến", refresh_token không được nhận trong phản hồi. – Valarpirai

+0

Bạn có thể thử chạy qua yêu cầu OAuth bằng Firebug hoặc Chrome Dev Tools để xem chính xác URL nào OAuth.io đang truy cập không? –

+0

https://oauth.io/auth/google?k=ndXMRv8xxxxxx&d=http://localhost/&opts={"authorize":{"approval_prompt":"force","access_type":"offline"},"state ":" nBGE8Rv1ufxxxxxxxx "," state_type ":" client "} Đây là (được giải mã) URL Oauth.io JS sử dụng để mở cửa sổ bật lên – Valarpirai

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