此处有人通过Google为Auth0实施社交登录吗?我在使用Google验证后返回令牌(访问和ID)时遇到问题。
这是我的代码:
var waGoogle = new auth0.WebAuth({
domain: 'testApplication.auth0.com',
clientID: '************',
redirectUri: 'http://localhost:8080/'
})
waGoogle.authorize({
connection: 'google-oauth2',
responseType: 'id_token token'
}, function(err, authResult){
if(err){
console.log('Google Login Error')
console.log(err)
}
});
Google屏幕显示,我登录后,我被重定向回我的应用程序。从应用程序中,我解析URL以便我可以获取访问权限和id令牌。
let getParameterByName = (name) => {
var match = RegExp('[#&]' + name + '=([^&]*)').exec(window.location.hash);
return match && decodeURIComponent(match[1].replace(/\+/g, ' '));
}
var access_token = getParameterByName('access_token')
var id_token = getParameterByName('id_token')
我遇到的问题是,没有任何令牌允许我调用我的API(asp.net web api),这些API用[Authorize]属性修饰。它返回一个:
401(未经授权)
我知道我的API正常运行,就像使用普通的
一样用户名 - 密码的验证
我也获得访问令牌的方法,我的api调用只是通过。
从Google获取访问权限和id_token后,我还需要执行哪些后续步骤吗?我是否需要额外调用Auth0以获取正确的访问令牌才能调用我的web api?
感谢。
答案 0 :(得分:1)
您要查找的令牌称为IdP(身份提供商)令牌。这与登录后发给你的那个不同。在Auth0站点上有很好的指令可以引导您完成获取该令牌的过程。
Here is the overview of IdP tokens
Here is a step-by-step guide to calling the Identity Provider
the tl; dr:
要访问IdP令牌,您需要从服务器调用Auth0管理API。为此,您的服务器将需要一个管理令牌。然后使用该令牌访问端点 / api / v2 / users / [USER_ID] 。在从Auth0发回的对象中,查找Google身份并提取该令牌。
另请注意,如果可以,您应该将该令牌保留在服务器上。如果您可以将这些电源令牌远离您的客户,您的用户将会很高兴。