2017-07-05 58 views
0

我在auth0和auth0-js模塊上使用Hosted Login頁面來授權我的用戶。如何使用JS API將配置選項傳遞給Auth0託管頁面?

該文檔討論a config object和頁面本身清楚地顯示了這樣一個對象被反序列化。

但是,文檔不會遠程談論應如何將此對象傳遞給頁面。事實上,這並不遠程工作的文檔indicate an approach(無配置參數被設置)

我需要序列化對象自己並設置config屬性或者是有一些其他的方法呢?

+0

讓我們退後一步。你爲什麼想這樣做?你試圖解決什麼用例? – woloski

+0

首先,傳入徽標的網址。如果我在自定義頁面中對其進行硬編碼,那麼我需要跟蹤它,我應該在將來更改徽標的位置或名稱,而不是將其作爲配置參數傳入。另外,配置允許我傳入字符串以包含在登錄頁面中 - 對於任何類型的模板頁面來說,這都是非常標準的用例。 – Dancrumb

+0

等等......是來自別處的「@@ config @@」嗎?在'auth0-js'代碼中,我無法看到設置託管頁面中使用的屬性的任何內容...... – Dancrumb

回答

0

我解決了神祕感:當您調用託管登錄頁面時,您必須在授權調用中傳遞參數。我做了一個示例,允許使用參數指定託管頁面的語言。

Script代碼:

var params=new Array(); 
params['language'] = 'es'; 

var webAuth = new auth0.WebAuth({ 
    domain: 'example.auth0.com', 
    clientID: 'YOUR_CLIENT_ID', 
    redirectUri: 'https://www.example.com/redirect', 
    audience: 'https://example.auth0.com/userinfo', 
    responseType: 'code', 
    scope: 'openid profile email', 
    allowShowPassword: true, 
}); 

webAuth.authorize(params); 

託管的網頁代碼:

var config = JSON.parse(decodeURIComponent(escape(window.atob('@@[email protected]@')))); 
var language; 
if (config.extraParams.language) 
    language = config.extraParams.language; 
else 
    language = 'en'; 

var lock = new Auth0Lock(config.clientID, config.auth0Domain, { 
    ... 
    language: language 
}); 

lock.show(); 

所以,您在授權調用指定任何參數入店使用config.extraParams變量

PD:月晚了,但我希望它可以幫助其他用戶

相關問題