2016-09-25 17 views
5

Tôi đang xây dựng một ứng dụng di động cordova và cố gắng sử dụng API khóa auth0. Tôi gặp sự cố với mã thông báo làm mới. Tôi có thể truy xuất mã thông báo làm mới trong authResult nhưng không thể tìm ra cách để thực sự làm mới id_token (tôi giả sử tôi có thể tự viết REST bản thân)Trong khóa auth0, làm cách nào để làm mới id_token?

Trong tài liệu v9, có vẻ như đã có phương pháp: https://auth0.com/docs/libraries/lock/v9/using-a-refresh-token

lock.getClient().refreshToken(refresh_token, function (err, delegationResult) { 
    // Get here the new JWT via delegationResult.id_token 
}); 

Tuy nhiên, trong khóa v10 có vẻ như phương pháp này không tồn tại nữa: https://auth0.com/docs/libraries/lock/v10/api

bất cứ ai có thể tư vấn cho nếu có một cách để làm mới thẻ bằng cách sử dụng API khóa?

+1

Bạn có thể khởi tạo một thể hiện của Auth0.js 'cái .getClient() 'phương pháp sẽ trả lại đối tượng Auth0js mà Khóa sử dụng, với Khóa 10 chúng tôi khuyên bạn nên tạo một cá thể Auth0.js một cách riêng biệt. – ShrekOverflow

Trả lời

1

Trước tiên, bạn cần phải hoặc là đã bao gồm thẻ script Auth0 trong HTML của bạn:

<script src="https://cdn.auth0.com/js/lock/10.8/lock.min.js"></script> 

Hoặc, nếu bạn đã cài đặt từ NPM, bạn có thể yêu cầu Auth0:

var Auth0 = require("auth0-js"); 

Trong V10, bạn tạo một cá thể của máy khách Auth0 (tách biệt với cá thể Auth0Lock) có một hàm refreshToken():

var auth0 = new Auth0({clientID: YOUR_CLIENT_ID, domain: YOUR_AUTH0_DOMAIN}); 
... 
auth0.refreshToken(refresh_token_here, (err, resp) => { 
    // resp: {expires_in: 36000, id_token: "id_token here", token_type: "Bearer"} 
} 

Quy định này cũng có thể đạt được bằng cách sử dụng các chức năng getDelegationToken():

auth0.getDelegationToken({ 
    client_id: YOUR_CLIENT_ID, 
    grant_type: "urn:ietf:params:oauth:grant-type:jwt-bearer", 
    refresh_token: refresh_token_here, 
    scope: "openid", 
    api_type: "auth0" 
    }, (err, resp) => { 
    // resp: {expires_in: 36000, id_token: "id_token here", token_type: "Bearer"} 
    }); 
+1

sẽ hữu ích nếu bạn chỉ cách nhập riêng Auth0. – Seiyria

+0

Làm thế nào bạn có thể nhận được giá trị của 'refresh_token'? –

+0

@KeesdeKooter Để nhận mã thông báo làm mới, bạn cần phải bao gồm phạm vi 'offline_access' khi bắt đầu yêu cầu xác thực. Sau đó, phản hồi sẽ bao gồm giá trị refresh_token. Tài liệu của Auth0 bao gồm khá tốt [ở đây] (https://auth0.com/docs/tokens/refresh-token/current). – Andrew

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