私は反応ネイティブのFacebookログインエラーを処理する必要があります。二つのオプションを持つReactネイティブFB SDKハンドル認証拒否
"Facebook. Application would like to access your basic profile info and list of friends."
:新鮮な私のアプリケーションのインストール後にログインしようとすると
は、ユーザーにポップアップを示し、「OK」「許可しない」と。通常のフローでは、私は適切なトークンを取得します。それがキャンセルされた理由に関する情報がありません
{
"isCancelled": true,
"grantedPermissions": null,
"declinedPermissions": null
}
:ユーザーがonLoginFinished
に拒否した場合しかし、私は次のような結果を得ます。拒絶は"isCancelled": true
を'system_account'
とする唯一の理由ですか?その後'system_account'
でログインするすべての連続試行は即座に次のエラーで失敗
:
{
"code": "FacebookSDK",
"domain": "com.facebook.sdk.login",
"framesToPop": 1,
"nativeStackIOS": [...],
"userInfo": {
"NSLocalizedDescription": "Access has not been granted to the Facebook account. Verify device settings.",
"com.facebook.sdk:FBSDKErrorLocalizedDescriptionKey": "Access has not been granted to the Facebook account. Verify device settings."
}
}
それは私に私がユーザーに表示することができますエラーが発生しますが、私は確実にそれを解析することはできませんローカライズされています。ですから、ユーザーがアクセス許可を与えなかったときにどうすれば確実に検出できますか?
コード私が持っている:私は、私の考えることができるものから、
import React from 'react'
import {AccessToken, LoginManager} from 'react-native-fbsdk'
class Login extends React.Component {
login =()=>{
LoginManager.setLoginBehavior('system_account')
LoginManager.logInWithReadPermissions()
.then(this.onLoginFinished)
.catch(this.onLoginError)
}
onLoginFinished = (result)=>{
if(result.isCancelled) {
//
} else {
AccessToken.getCurrentAccessToken().then((data)=>{
this.props.onLogin(data.accessToken.toString())
})
}
}
onLoginError = (error)=>{
// Want to handle this case but
//can only show a message to the user =(
}
render() {
return (
<View>
<TouchableHighlight onPress={this.login}>
<View><Text>Facebook</Text></View>
</TouchableHighlight>
</View>
)
}
}
は'system_account'
でキャンセルし、それが唯一の方法である、別途その振る舞いを扱う受けた後'native'
ログイン動作への切り替えを行うことができますか?