Google社交用Auth0令牌为[Authorized] API调用
问题描述:
这里的任何人都实现了通过Google for Auth0进行社交登录?在与Google验证后,我会遇到令牌(访问和ID)问题。Google社交用Auth0令牌为[Authorized] API调用
这里是我的代码:
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)
}
});
谷歌画面出现,我登录,我重定向回我的应用程序。从应用程序中,我解析URL以便我可以获取访问和标识令牌。我有
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网页API)都装修与[授权]属性。它返回一个:
401(未授权)
我知道我的API是否正常工作,如使用正常
用户名,密码,验证
方法在那里我也获得访问令牌,我的API调用只是通过。
从Google获取访问权限和id_token后,我需要执行哪些后续步骤?我是否需要额外拨打Auth0才能获取正确的访问令牌以便能够调用我的Web API?
谢谢。
答
您正在查找的令牌称为IdP(身份提供者)令牌。这与登录后发给你的那个不同。在Auth0站点上有非常好的指导,可以引导你完成获取该令牌的过程。
Here is the overview of IdP tokens
Here is a step-by-step guide to calling the Identity Provider
的TL;博士:
要访问的IdP令牌,你需要从你的服务器调用Auth0管理API。为此,您的服务器将需要一个管理令牌。然后使用该令牌访问端点/api/v2/users/[USER_ID]。在从Auth0发回的对象中,查找Google身份并提取该令牌。
另请注意,如果可以的话,您应该在服务器上保留该令牌。如果您可以将这些权力令牌远离您的客户,您的用户将会很高兴。
您是否按照[此处](https://auth0.com/docs/goog-clientid)的说明配置了Google自己的社交连接? –
是的,我做到了。我能够获得令牌(访问和ID),但是我面临的问题是这些令牌未被授权用于我用[授权]为asp.net web api所装饰的API。 – aThink
访问令牌是否获得JWT令牌(包含三个部分的长字符串,由点分隔)。如果是这样,你可以在https://jwt.io中调试它,看看它与使用数据库连接时发出的不同。 –