[英]Twitter signin error in react-native-twitter-signin in iOS only
[英]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.