2016-09-25 96 views
5

我正在構建一個cordova移動應用程序並嘗試使用auth0鎖定API。我在刷新令牌時遇到問題。我可以retreive刷新令牌在authResult,但無法弄清楚如何實際刷新id_token(我想我可以寫calsl自己的REST)在auth0鎖定中,如何刷新id_token?

在V9的文檔,似乎曾經有一個方法: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 
}); 

然而,在鎖定V10看來這個方法不存在任何更多:https://auth0.com/docs/libraries/lock/v10/api

誰能告知,如果有一種方法來刷新使用鎖定API令牌?

+1

可以初始化Auth0.js的一個實例的'.getClient()'方法將返回其鎖定使用Auth0js對象,具有鎖我們建議你分別創建一個Auth0.js實例。 – ShrekOverflow

回答

1

首先,你需要或者已包括Auth0的腳本標籤在你的HTML:

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

或者,如果你從NPM安裝,您可以要求Auth0:

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

在V10中,創建Auth0客戶端(與Auth0Lock實例分開)的一個實例,該實例具有功能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"} 
} 

同樣也可以通過使用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

如果您顯示如何單獨導入Auth0將會很有幫助。 – Seiyria

+0

如何獲得'refresh_token'的值? –

+0

@KeesdeKooter要獲得刷新標記,需要在啓動身份驗證請求時包含'offline_access'作用域。該響應將包含一個refresh_token值。 Auth0的文檔覆蓋了[這裏](https://auth0.com/docs/tokens/refresh-token/current)。 – Andrew

相關問題