![](/img/trans.png)
[英]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.