Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Facebook应用程序刷新应用程序响应本机登录_Facebook_React Native_React Native Fbsdk - Fatal编程技术网

使用Facebook应用程序刷新应用程序响应本机登录

使用Facebook应用程序刷新应用程序响应本机登录,facebook,react-native,react-native-fbsdk,Facebook,React Native,React Native Fbsdk,我使用的是react原生fbsdk,我在IOS上。当用户登录Facebook时,他们可以按下两个按钮使用Facebook应用程序登录或使用电话号码或电子邮件地址登录。使用电话号码或电子邮件地址登录非常有效,我获取用户对象并为他们创建一个用户帐户。但是当用户按使用Facebook应用程序登录时,我不会收到用户对象,整个应用程序会刷新,用户被推到登录页面,Facebook按钮变为注销。我不太确定如何处理这个问题,因为当用户使用Facebook应用程序登录时,我的控制台中没有任何日志或警报被调用,整个

我使用的是react原生fbsdk,我在IOS上。当用户登录Facebook时,他们可以按下两个按钮使用Facebook应用程序登录使用电话号码或电子邮件地址登录。使用电话号码或电子邮件地址登录非常有效,我获取用户对象并为他们创建一个用户帐户。但是当用户按使用Facebook应用程序登录时,我不会收到用户对象,整个应用程序会刷新,用户被推到登录页面,Facebook按钮变为注销。我不太确定如何处理这个问题,因为当用户使用Facebook应用程序登录时,我的控制台中没有任何日志或警报被调用,整个应用程序只是刷新。任何帮助都将不胜感激

           <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")}
{
log(“onLoginFinished:”,结果);
如果(错误){
log(“登录有错误:”,result.error);
}否则如果(结果被取消){
log(“登录被取消”);
}否则{
AccessToken.getCurrentAccessToken()。然后(
(数据)=>{
让accessToken=data.accessToken
log(“accessToken.toString():”,accessToken.toString())
const responseInfo回调=(错误,结果)=>{
如果(错误){
console.log('获取数据时出错:',错误)
//lert('获取数据时出错:'+Error.toString());
}否则{
log(“responseInfo回调:”,result)
this.state.fbobj=结果;
这是sendAjax();
//警报('成功获取数据:'+result.toString());
}
}
const infoRequest=新GraphRequest(
“/我”,
{
accessToken:accessToken,
参数:{
字段:{
字符串:“电子邮件,姓名”
}
}
},
响应信息回调
);
//启动图形请求。
新建GraphRequestManager().addRequest(infoRequest).start()
}
)
}
}
}
onLogoutFinished={()=>console.log(“注销”)}

在按钮操作中,您将需要以下内容:

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

您好,谢谢您的回复,我刚刚在上面添加了我的代码,我假设我的代码是错误的,因为我没有LoginManager?您可以使用Github文档中的代码进行测试吗?在使用中,它说登录按钮+访问令牌,只需复制登录按钮内的代码并测试发生的情况页面仍然只是刷新sadly对于Android它似乎可以工作,但对于IOS我相信不行,我会仔细检查我的appdelegate.m代码