Firebase身份验证:是否可以查看用户的Twitter ID?

时间:2019-05-16 22:49:20

标签: firebase twitter firebase-authentication

我刚刚实现了Twitter登录到Firebase Web应用程序。用户成功登录后,我想查看用户的Twitter ID(以在用户之间启用基于Twitter的通信)。

根据文档(https://firebase.google.com/docs/auth/web/manage-users),提供者特定的信息位于用户信息的providerData下。

在providerData下,我看到以下内容

displayName: "Satoshi Nakajima" (as I expected)
email: null (as I expected)
phoneNumber: null (as I expected)
photoURL: "https://abs.twimg.com/..." (as I expected) 
providerId: "twitter.com" (of course)
uid: "1129128..." (what is this?)

uid似乎是一个唯一的ID,但它与我们通常使用的Twitter ID不同,例如@snakajime(属于我的)。

我想知道为什么我在这里看不到Twitter ID。我想念什么吗?是否有任何API可以从这个奇怪的uid获取Twitter ID?

2 个答案:

答案 0 :(得分:2)

据我所知,您正在寻找的屏幕名称并未包含在Firebase通过Twitter提供的Twitter OAuth中,但是您找到的uid确实是用户的Twitter用户ID。

使用该ID,您可以通过将其传递给Twitter API users/show endpoint来使用Twitter API来获取有关用户的详细信息。由于您计划提供基于Twitter的通信,因此您可能仍然需要使用此API。

例如:

GET https://api.twitter.com/1.1/users/show.json?user_id={the_uid_from_provider_data}


RESPONSE:
{
  "id": {the_uid_from_provider_data},
  "id_str": "{the_uid_from_provider_data}",
  "name": "Snakajime",
  "screen_name": "snakajime", // <--- Here is the screen name you are looking for
  ...
}

答案 1 :(得分:2)

实际上,您可以在登录后立即通过AdditionalUserInfo获取它。

以下是网络API的示例:

firebase.auth().signInWithPopup(new firebase.auth.TwitterAuthProvider())
  .then((userCredential) => {
    // Get the Twitter screen name.
    console.log(userCredential.additionalUserInfo.username);
  })
  .catch((error) => {
    // An error occurred.
  });