繁体   English   中英

如何在 Firebase Twitter 登录中获取令牌和密码?

[英]How can I get the token and secret in Firebase Twitter Login?

我正在使用 Firebase Auth 开发 android 应用程序。 我的应用程序应该使用 Twitter 提供登录功能。 所以我正在开发 Twitter Login 使用 Firebase Auth。

我应该将 Twitter 用户的令牌和密码发送到我们的后端服务器。 但我不知道如何得到它们。

根据firebase官方文档,

firebaseAuth
    .startActivityForSignInWithProvider(/* activity= */ this, provider.build())
    .addOnSuccessListener(
        new OnSuccessListener<AuthResult>() {
          @Override
          public void onSuccess(AuthResult authResult) {
            // User is signed in.
            // IdP data available in
            // authResult.getAdditionalUserInfo().getProfile().
            // The OAuth access token can also be retrieved:
            // authResult.getCredential().getAccessToken().
            // The OAuth secret can be retrieved by calling:
            // authResult.getCredential().getSecret().
          }
        })
    .addOnFailureListener(
        new OnFailureListener() {
          @Override
          public void onFailure(@NonNull Exception e) {
            // Handle failure.
          }
        });

onSuccess回调返回AuthResult但是当我尝试在 function 下面使用时:

authResult.getCredential().getAccessToken()
authResult.getCredential().getSecret()

有没有功能? 我怎样才能得到它们???

AuthResult class 包含一个名为getCredential()的方法,该方法返回 AuthCredential 类型的object 但是,此 class包含任何 getAccessToken() 或 getSecret() 方法。 没有超级 class 可以容纳它们。

当您尝试使用提供程序实现登录机制时,您应该执行两个操作:

  1. 获取提供者凭据。
  2. Go 转发并执行认证。 如果您使用 Firebase 执行此操作,则应将它们传递给FirebaseAuth#signInWithCredential(AuthCredential)方法。

如果您需要获取令牌和密钥的值,则必须从TwitterAuthToken object 中获取它们。 如您所见,此 class 公开了两个名为tokensecret的公共字段。

因此,一旦您按下登录按钮并选择一个帐户,您将获得结果类型为 object 的Result 如您所见,这是一个通用的 class。 这意味着 class 中的data字段是TwitterSession类型,它是一个 class 扩展Session 现在您将能够像这样获得两个对象:

String token = session.getAuthToken().token;
String secret = session.getAuthToken().secret;

现在您可以 go 转发并创建AuthCredential object:

AuthCredential credential = TwitterAuthProvider.getCredential(token, secret);

并使用 Twitter 执行 Firebase 身份验证:

auth.signInWithCredential(credential).addOnCompleteListener(/* ... */);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM