繁体   English   中英

email 无法获取 react-native-twitter-signin 库中的错误

[英]email COULD NOT FETCH error in react-native-twitter-signin library

在使用 react-native-twitter-signin 在 react native 中实现 twitter 登录时,我已按照文档中的所有步骤进行操作,但在 then() 方法中没有收到用户 object。 它在 catch 块中引发错误。 错误如下

错误:{ NativeMap: {"email":"COULD_NOT_FETCH","userName":"osamaaer05","userID":"13540882326114024","name":"osamaeer05","authTokenSecret":"nymvUWPAnBnvvhfhbQ1IU1ojETUuJWvq01VCiLOZDn9","authToken": “1354088232611414024-425rd6PMkdQVk1YrP1gAiiBuwpc9”} }

If email is not required replace the function in node_modules/@react-native-twitter-signin/twitter-signin/android/src/main/java/com/rntwittersignin/twittersignin/TwitterSigninModule.java

@Override
 public void failure(TwitterException exception) {
 map.putString("email", "");
 promise.resolve(map);
}

我使用react-native-twitter-signin/twitter-signin signin 使用firebase进行身份验证时遇到了同样的问题。

与您的错误类似,我的错误还包含成功登录的所有必要信息(电子邮件除外)。 所以,我认为我们可以使用错误进行身份验证。

事实证明,firebase 为 JS 发布的官方文档中也提出了这一点。 他们提供了一种名为credentialFromError()的方法,该方法也可用于react-native

有了这些信息,我想出了以下代码,让我可以使用 twitter 登录:

import auth from '@react-native-firebase/auth';
import RNTwitterSignIn from '@react-native-twitter-signin/twitter-signin';


RNTwitterSignIn.init('XXX_API_KEY_XXX', 'XXX_API_SECRET_XXX').then(() =>
    console.log('Twitter SDK initialized'),
);

async function onTwitterButtonPress() {

    var twitterCredential;

    try {
        // Perform the login request
        const { authToken, authTokenSecret } = await RNTwitterSignIn.logIn();

        // Create a Twitter credential with the tokens
        twitterCredential = auth.TwitterAuthProvider.credential(authToken, authTokenSecret);

    } catch (e) {
        // Create a Twitter credential with the error       
        twitterCredential = auth.TwitterAuthProvider.credentialFromError(e);
    }

    return auth().signInWithCredential(twitterCredential);
}

PS:不确定问题是否与firebase有关,但我认为错误并不意味着身份验证/登录失败仍然是一个有用的见解。

暂无
暂无

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

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