2017-02-21 2 views
1

Je suis actuellement en train de mettre en place un bouton de connexion Facebook dans mon application native. Une fois l'utilisateur connecté avec succès, je prends quelques informations, prénom, nom de famille et adresse e-mail.Réagir natif - fbsdk LoginManager vs LoginButton

Après avoir lu la documentation du SDK et des exemples en ligne, je vois deux approches différentes pour y parvenir:

  1. En utilisant LoginButton & AccessToken puis faire une GraphRequest

  2. En utilisant LoginManager puis effectuez une GraphRequest (la approche que j'ai choisi):

    class LoginView extends Component { 
        _fbAuth =() => { 
         LoginManager.logInWithReadPermissions(['public_profile','email']).then(function(result){ 
          if(result.isCancelled){ 
           console.log('loging cancelled') 
          } 
          else { 
           console.log('login success' + result.grantedPermissions) 
    
           const infoRequest = new GraphRequest('/me', { 
            parameters: { 
             'fields': { 
              'string' : 'email,first_name,last_name,picture' 
             } 
            } 
           }, (err, res) => { 
            console.log(err, res); 
           }); 
           new GraphRequestManager().addRequest(infoRequest).start(); 
    
          } 
         }, function(error){ 
          console.log('An error occured: ' + error) 
         }) 
        } 
    
        render(){ 
         return (
          <TouchableHighlight style={{flex:1}} onPress={() => {this._fbAuth()}}> 
           <View style={styles.container}> 
            <View style={styles.buttonContainer}> 
             <Text style={{flex:1}}>Login with Facebook</Text> 
            </View> 
           </View> 
          </TouchableHighlight> 
         ) 
        } 
    } 
    

Quelle est la principale différence entre LoginManager & LoginButton?

exemples en ligne de LoginButton obtiennent également le jeton actuel: AccessToken.getCurrentAccessToken().then(...)

Avec LoginManager j'ai réussi à obtenir les informations utilisateur sans avoir à utiliser AccessToken - est LoginManager appelle AccessToken derrière la scène?

Y a-t-il une approche préférée?

+0

Consultez ma réponse –

Répondre

0

Ce que je comprends est

Lorsque vous utilisez LoginButton & AccessToken puis faire une GraphRequest

Donc, vous devez vérifier si votre AccessToken est nul ou non ou votre currentToken est valide ou non, si vous avez accèsToken alors vous pouvez directement obtenir des données sans cliquer sur le bouton Facebook ou le bouton de connexion. Cela signifie donc que si vous n'exécutez pas la méthode de déconnexion ou si vous désinstallez l'application, vous pouvez toujours obtenir des données avec l'aide de votre accès à la demande de graphe.

Maintenant, lorsque vous utilisez LoginManager puis faites une Cette approche apporte à chaque fois à Safari GraphRequest

Ainsi, pour le processus de autorization de facebook App. LoginManager est généralement à chaque ouverture de Facebook dans Safari, puis revenir à l'application et donner des données.

J'espère que vous pouvez comprendre.
Je vous remercie

+0

Merci pour votre réponse. Entre les deux, y a-t-il une approche préférée à utiliser? – John

+0

Mieux utiliser le bouton de connexion & accesstoken car cela vous donnera des données sans ouvrir la page facebook, si votre accesstoken n'est pas nul ou accessible –

+0

Super sans problème. Merci pour votre contribution. – John