在这种情况下,我可以使用Okta登录小部件登录,并返回用户的电子邮件和用户ID(okta)。
我可以使用它,但是现在我的客户要求我至少要设置名称,因此需要完成。
问题是,我看到了/ me端点如何向我返回所需的数据,但是我无法从AngularJS范围或Okta登录小部件SDK中访问
但是我无法访问它。使用 sessiong.get()函数,它仅检索userId和电子邮件。
var oktaSignIn = new OktaSignIn({
baseUrl: 'https://dev-893652.oktapreview.com',
clientId: '0oaj1v2jfyKeTwLR60h7',
redirectUri: 'https://movielearningv4.app.keetup.com',
authParams: {
issuer: 'https://dev-893652.oktapreview.com/oauth2/default',
scopes: ['openid', 'email', 'profile'],
responseType: ['id_token','token'],
display: 'page'
}
});
if (oktaSignIn.token.hasTokensInUrl()) {
oktaSignIn.token.parseTokensFromUrl(function success(res) {
// The tokens are returned in the order requested by `responseType` above
var accessToken = res[0];
var idToken = res[1]
console.log("response", res)
// Say hello to the person who just signed in:
console.log('Hello, ' + res);
// Save the tokens for later use, e.g. if the page gets refreshed:
oktaSignIn.tokenManager.add('accessToken', accessToken);
oktaSignIn.tokenManager.add('idToken', idToken);
oktaSignIn.session.get(function (response) {
// Session exists, show logged in state.
// Doesn't return name
console.log("response", response)
// Remove the tokens from the window location hash
window.location.hash='';
if (res.status === 'ACTIVE') {
console.log('Welcome , ' + res.login);
return;
}
});
}, function error(err) {
// handle errors as needed
console.error(err);
});
} else {
oktaSignIn.session.get(function (res) {
console.log("RESPONSES!", res)
if (res.status === 'ACTIVE') {
console.log('Response active!, ' + res);
// Also doesn't return name
return;
}
// No session, show the login form
oktaSignIn.renderEl({ el: '#okta-login-container' },
function success(res) {
// Nothing to do in this case, the widget will automatically redirect
// the user to Okta for authentication, then back to this page if successful
console.log("success", res)
},
function error(err) {
// handle errors as needed
console.error("error session", err);
}
);
});
}
如何使用Widget Okta SDK获取用户的名称和头像?