React-native使用Facebook App登录刷新应用

时间:2017-11-01 22:17:18

标签: facebook react-native react-native-fbsdk

我正在使用react-native-fbsdk并在IOS上。当用户使用Facebook登录时,他们可以按两个按钮。 使用Facebook应用程序登录使用电话号码或电子邮件地址登录。使用电话号码或电子邮件地址登录工作完美,我获取用户对象并为他们创建用户帐户。但是,当用户按使用Facebook应用程序登录时,我没有收到用户对象,整个应用程序会刷新到推送到登录页面的位置,而Facebook按钮已转向退出。我不太清楚如何处理这个问题,因为当用户使用Facebook App登录时,我的console.logs或警报都没有被调用,整个应用程序只是刷新。非常感谢任何帮助。

           <LoginButton
            readPermissions={["email","public_profile"]}
            onLoginFinished={
              (error, result) => {
                console.log("onLoginFinished: ", result);
                if (error) {
                  console.log("login has error: ", result.error);
                } else if (result.isCancelled) {
                  console.log("login is cancelled.");
                } else {
                  AccessToken.getCurrentAccessToken().then(
                    (data) => {
                      let accessToken = data.accessToken
                      console.log("accessToken.toString(): ", accessToken.toString())

                      const responseInfoCallback = (error, result) => {
                        if (error) {
                          console.log('Error fetching data: ', error)
                          //lert('Error fetching data: ' + error.toString());
                        } else {
                          console.log("responseInfoCallback:", result)
                          this.state.fbobj = result;
                          this.sendAjax();
                          //alert('Success fetching data: ' + result.toString());
                        }
                      }

                      const infoRequest = new GraphRequest(
                        '/me',
                        {
                          accessToken: accessToken,
                          parameters: {
                            fields: {
                              string: 'email,name'
                            }
                          }
                        },
                        responseInfoCallback
                      );

                      // Start the graph request.
                      new GraphRequestManager().addRequest(infoRequest).start()

                    }
                  )
                }
              }
            }
            onLogoutFinished={() => console.log("Logout")}

1 个答案:

答案 0 :(得分:1)

在你的按钮动作中,你需要这样的东西:

import { LoginManager, AccessToken } from 'react-native-fbsdk'

handlePressFacebookLogin = () => {
    LoginManager.logInWithReadPermissions(['public_profile', 'email']).then(
      (result) => {
        if (!result.isCancelled) {
          AccessToken.getCurrentAccessToken().then((data) => {
            console.log(data)
          })
        }
      }
    )
  }