Firebase Auth: возможно ли увидеть твиттер ID пользователя?

Я только что ввел логин Twitter в свое веб-приложение Firebase. Когда пользователь успешно войдет в систему, я хотел бы видеть идентификатор пользователя в Twitter (для обеспечения связи между пользователями на основе Twitter).

Согласно документу ( https://firebase.google.com/docs/auth/web/manage-users ), конкретная информация о провайдере находится в 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 выглядит как уникальный идентификатор, но он отличается от идентификатора Twitter, который мы обычно используем, например @snakajime (который у меня).

Мне интересно, почему я не вижу идентификатор Twitter здесь. Я что-то пропустил? Есть ли API для получения идентификатора Twitter из этого странного uid?

Всего 2 ответа


Насколько я знаю, искомое имя не включено в OAuth Twitter, предоставляемый через Firebase, но найденный вами идентификатор действительно является идентификатором пользователя в Twitter.

Используя этот идентификатор, вы можете использовать API Twitter для получения подробной информации о пользователе, передав его пользователям API Twitter / show endpoint . Поскольку вы планируете предоставлять связь на основе 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
  ...
}

Вы можете получить его сразу после входа в систему через 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.
  });

Есть идеи?

10000