React-native Facebook SDK登录按钮不起作用

时间:2018-12-18 07:46:07

标签: javascript react-native

我正在尝试使用react-native-fbsdk登录。我遵循了React Native FBSDK中的步骤。运行xcode时,我没有收到任何错误。

当我运行react-native run-ios时没有错误,甚至可以看到facebook Login Button,但是当我单击按钮时,它并没有带我到Facebook登录页面。什么都没发生。下面是我的代码:

import React, {Component} from 'react';
import {Platform, StyleSheet, Text, View} from 'react-native';
import { LoginButton, AccessToken } from 'react-native-fbsdk';

export default class App extends Component<Props> {

  loginFacebook(){
  LoginManager.logInWithReadPermissions(["public_profile"]).then(
    function(result) {
      if (result.isCancelled) {
        console.log("Login cancelled");
      } else {
        console.log(
          "Login success with permissions: " +
            result.grantedPermissions.toString()
        );
      }
    },
    function(error) {
      console.log("Login fail with error: " + error);
    }
  );
  }

  render() {
    return (
      <View style={styles.container}>
      <LoginButton
          onLoginFinished={
            (error, result) => {
              if (error) {
                console.log("login has error: " + result.error);
              } else if (result.isCancelled) {
                console.log("login is cancelled.");
              } else {
                AccessToken.getCurrentAccessToken().then(
                  (data) => {
                    console.log(data.accessToken.toString())
                  }
                )
              }
            }
          }
          onLogoutFinished={() => console.log("logout.")}/>
      </View>
    );
  }
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    alignItems: 'center',
    backgroundColor: '#F5FCFF',
  },
});

知道发生了什么吗?

3 个答案:

答案 0 :(得分:1)

我知道了。我不知道我浪费了多少时间来解决这个问题!

原来是FacebookSDKs-iOS-4.39.0的一个错误,我不得不将其降级为FacebookSDKs-iOS-4.38.0

From this website我下载了旧版本,并且可以正常工作!

答案 1 :(得分:0)

您能否尝试使用fbsdk中的这段代码,它将一些道具传递给按钮,您可能会忘记这样做:

<LoginButton
          onLoginFinished={
            (error, result) => {
              if (error) {
                console.log("login has error: " + result.error);
              } else if (result.isCancelled) {
                console.log("login is cancelled.");
              } else {
                AccessToken.getCurrentAccessToken().then(
                  (data) => {
                    console.log(data.accessToken.toString())
                  }
                )
              }
            }
          }
          onLogoutFinished={() => console.log("logout.")}/>

通过以下代码,您可以尝试以其他方式尝试使用LoginManager: 创建用于Facebook登录的按钮:

<button onclick={this.loginFacebook}> </button>

为Facebook登录创建功能:

loginFacebook(){
LoginManager.logInWithReadPermissions(["public_profile"]).then(
  function(result) {
    if (result.isCancelled) {
      console.log("Login cancelled");
    } else {
      console.log(
        "Login success with permissions: " +
          result.grantedPermissions.toString()
      );
    }
  },
  function(error) {
    console.log("Login fail with error: " + error);
  }
);
}

答案 2 :(得分:0)

我通过从终端react-native run-android运行应用程序来解决此问题

我与以下人员一起工作: “ react-native”:“ 0.60.5”, “ react-native-fbsdk”:“ ^ 1.0.4”