2017-02-21 6 views
1

Я в настоящее время внедряю кнопку входа в систему Facebook в свое собственное родное приложение. После успешного входа в систему я получаю некоторую информацию, имя, фамилию и адрес электронной почты.React native - fbsdk LoginManager vs LoginButton

После прочтения SDK документации и онлайн примеры можно увидеть два различных подхода для достижения этой цели:

  1. Использование LoginButton & маркер доступа затем сделать GraphRequest

  2. Использование LoginManager затем сделать GraphRequest (подход, который я выбрал):

    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> 
         ) 
        } 
    } 
    

В чем основное отличие между LoginManager & LoginButton?

Online примеры LoginButton также получить текущий маркер: AccessToken.getCurrentAccessToken().then(...)

С LoginManager мне удалось получить информацию о пользователе без необходимости использовать маркер доступа - это LoginManager вызова маркер доступа за сценой?

Есть ли предпочтительный подход?

+0

Проверьте мой ответ –

ответ

0

Что я понимаю

При использовании LoginButton & маркер доступа, то сделать GraphRequest

Итак, вам нужно проверить, является ли ваш маркер доступа равен нулю или нет, или ваш currentToken является действительным или нет, если у вас есть accessToken, тогда вы можете напрямую получать данные без нажатия кнопки Facebook или входа в систему. Таким образом, это означает, что если вы не выполняете метод выхода из системы или не удаляете приложение, вы все равно сможете получить данные с помощью только вашей учетной записи accessToken с помощью Graph Request.

Теперь, когда вы используете LoginManager затем сделать GraphRequest

Таким образом, этот подход приносит вам каждый раз в Safari для авторизации процесса facebook App. LoginManager обычно каждый раз открывает Facebook в Safari, а затем возвращается в приложение и передает данные.

Упование вы можете понять.
Спасибо

+0

Спасибо за ваш ответ. Между ними существует предпочтительный подход? – John

+0

Лучше использовать кнопку входа в систему и accesstoken, потому что это даст вам данные, не открывая страницу facebook, если ваш accesstoken не ноль или недоступен –

+0

Отличная проблема. Спасибо за ваш вклад. – John

Смежные вопросы