如何在Firebase身份验证中获取Twitter屏幕名称

时间:2016-08-22 20:28:52

标签: android firebase firebaseui

您好我不知道如何从getprovidersData()获取twitter屏幕名称,因为它返回一个List,当我迭代List时,它会提供类似

的数据
  

D / Twitter Data :: com.google.android.gms.internal.zzafv@4f19ea4   D / Twitter Data :: com.google.android.gms.internal.zzafv@eb40d

    List proData = mFirebaseUser.getProviderData();
    for (Object ui:proData
         ) {
        Log.d("Twitter Data:",ui.toString());
    }

我如何从中获取推特使用屏幕名称。

谢谢!

3 个答案:

答案 0 :(得分:1)

您需要4件事来获取Twitter用户的详细信息,包括screen_name。

  1. 消费者密钥
  2. 消费者的秘密
  3. 访问令牌
  4. 令牌秘密

1和2您可以从Twitter应用程序仪表板获得。

当用户使用firebase auth成功登录时,将在signInSuccessWithAuthResult对象的authResult回调函数中给出

3和4。 这4个应该进入GET api调用的标头请求-> https://api.twitter.com/1.1/account/verify_credentials.json

有关此的更多信息:https://developer.twitter.com/en/docs/accounts-and-users/manage-account-settings/api-reference/get-account-verify_credentials

要在node.js应用中使用:

https://www.npmjs.com/package/twitter

要使用邮递员进行测试:

enter image description here

答案 1 :(得分:0)

此代码源自documentation中提供的示例。在您使用Twitter登录后,请尝试运行它,以查看显示名称是否是您期望的屏幕名称。

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();

if (user != null) {
    for (UserInfo profile : user.getProviderData()) {
        if (profile.getProviderId().equals(TwitterAuthProvider.PROVIDER_ID)) {
            // UID specific to the provider
            String uid = profile.getUid();

            // Name, email address, and profile photo Url
            String name = profile.getDisplayName();
            String email = profile.getEmail();
            Uri photoUrl = profile.getPhotoUrl();
            Log.i("DEBUG", String.format("uid=%s name=%s email=%s url=%s",
                    uid, name, email, photoUrl));
        }
    }
}

答案 2 :(得分:0)

或者只是在您的标头中使用您的 Bearer 调用 https://api.twitter.com/2/users/$userID