Auth0 - 获取提供者用户ID

时间:2017-08-08 06:53:30

标签: facebook twitter auth0

目前我依赖于一种垃圾方法来获取提供者用户ID(社交用户页面网址中使用的字符串/数字),基于拆分配置文件" sub"从/ profile端点给出的字段。

我看到旧的API有一个名为&#34的字段;标识"似乎存储了提供者用户ID,是否有新API的等价物?

基本上它应该返回:

这是我现在使用的代码,你可以看到提供者和provider_uid设置是多么的垃圾。

var webAuth = new auth0.WebAuth({
  domain: "himy.eu.auth0.com",
  clientID: "0gz79WpxVxXNH5qeYRXXTxTQiWZZEV9S",
  redirectUri: window.location.href,
  audience: "https://himy.eu.auth0.com/userinfo",
  responseType: "token id_token",
  scope: "openid profile"
});

function handleAuthentication() {
  webAuth.parseHash(function(err, authResult) {
    if (authResult && authResult.accessToken && authResult.idToken) {
      window.location.hash = "";
      webAuth.client.userInfo(authResult.accessToken, function(err, profile) {
        if (profile) {
          if (window.postMessage) {
            if (profile.sub.indexOf("facebook") === 0) {
              profile.provider_uid = profile.sub.split("|")[1];
              profile.provider = "facebook";
            } else if (profile.sub.indexOf("instagram") === 0) {
              profile.provider_uid = profile.nickname;
              profile.provider = "instagram";
            }
            window.postMessage(JSON.stringify(profile));
          }
          console.log(profile);
        }
      });
    } else if (err) {
      console.log(err);
    }
  });
}

window.addEventListener("load", function(e) {
  if (!window.location.hash) {
    webAuth.authorize();
  } else {
    handleAuthentication();
  }
});

0 个答案:

没有答案