针对[授权] API调用使用Auth0令牌进行Google社交登录

时间:2017-07-11 20:00:51

标签: asp.net-web-api social auth0

此处有人通过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?

感谢。

1 个答案:

答案 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身份并提取该令牌。

另请注意,如果可以,您应该将该令牌保留在服务器上。如果您可以将这些电源令牌远离您的客户,您的用户将会很高兴。