Facebook SDK 和自定义按钮登录 react-native 0.60+ 不工作
Facebook SDK & custom button Login in react-native 0.60+ not working
我正在尝试在我的 React-Native 应用程序中实现 Facebook 登录,但由于某种原因,它抛出了 Cannot read property 'logInWithPermissions' of undefined
。
我正在使用 React-Native 0.60.4
。
我已经下载 FacebookSDK 5.3.0
(_Stable framework)
尝试使用 Cocoapod 但经过一些研究,许多人不建议使用它,因为它会破坏项目。
这些是我遵循的步骤:
- 已下载 FacebookSDK 5.3.0(当前最新至 08/15/19)
- 将
FBSDKCoreKit.framework
、FBSDKLoginKit.framework
和 FBSDKShareKit.framework
放入文件夹中作为 ~/Documents/FacebookSDK
。
- 还将这 3 个框架文件放入我的 XCode 项目中的
/Frameworks
文件夹中。
- 为了以防万一,我还在构建设置下的框架搜索路径中添加了路径
~/Documents/FacebookSDK
。
- 在XCode上构建,成功。
- 我从我的 react-native 项目下载了 react-native-fbsdk。它下载版本 1.0.1.
- 我没有在
Link binary with Libraries
中添加 libRTCFBSDK.a
文件,因为它会抛出一个错误,提示 FBSDKShareKit.h isn't found
.
这就是我在 AuthView.js 上所做的,我将其添加到 TouchableOpacity 中的简单绑定 onPress 事件。
const FBSDK = require('react-native-fbsdk');
const {
LoginManager,
} = FBSDK;
handleFacebookLogin() {
LoginManager.logInWithPermissions(['public_profile', 'publish_actions']).then(
(result) => {
if (result.isCancelled) {
console.log('Login cancelled')
} else {
console.log('Login success with permissions: ' + result.grantedPermissions.toString())
}
},
(error) => {
console.log('Login fail with error: ' + error)
}
)
}
现在,我注意到在 Facebook 的 FBLoginManager.js
中,这是被调用的函数
logInWithPermissions(permissions: Array<string>): Promise<LoginResult> {
return LoginManager.logInWithPermissions(permissions);
},
每当我将鼠标悬停在 LoginManager 上时,它都会显示 未定义。为什么这是未定义的?当它实际上是文件顶部的常量时
const LoginManager = require('react-native').NativeModules.FBLoginManager;
谁能帮帮我?我已经挣扎了4天了。我已经尝试用 cocoapods 安装它,但没有成功。然后做 react-native link react-native-fbsdk
没有成功......很多人建议不要使用 link 而是手动做。
我还能尝试什么?谢谢。
您必须使用库在 Link 二进制文件中添加 libRTCFBSDK.a 文件。要修复“FBSDKShareKit.h 未找到”问题,请将 ~/Documents/FacebookSDK 更改为 $(HOME)/Documents/FacebookSDK
我正在尝试在我的 React-Native 应用程序中实现 Facebook 登录,但由于某种原因,它抛出了 Cannot read property 'logInWithPermissions' of undefined
。
我正在使用 React-Native 0.60.4
。
我已经下载 FacebookSDK 5.3.0
(_Stable framework)
尝试使用 Cocoapod 但经过一些研究,许多人不建议使用它,因为它会破坏项目。
这些是我遵循的步骤:
- 已下载 FacebookSDK 5.3.0(当前最新至 08/15/19)
- 将
FBSDKCoreKit.framework
、FBSDKLoginKit.framework
和FBSDKShareKit.framework
放入文件夹中作为~/Documents/FacebookSDK
。 - 还将这 3 个框架文件放入我的 XCode 项目中的
/Frameworks
文件夹中。 - 为了以防万一,我还在构建设置下的框架搜索路径中添加了路径
~/Documents/FacebookSDK
。 - 在XCode上构建,成功。
- 我从我的 react-native 项目下载了 react-native-fbsdk。它下载版本 1.0.1.
- 我没有在
Link binary with Libraries
中添加libRTCFBSDK.a
文件,因为它会抛出一个错误,提示FBSDKShareKit.h isn't found
.
这就是我在 AuthView.js 上所做的,我将其添加到 TouchableOpacity 中的简单绑定 onPress 事件。
const FBSDK = require('react-native-fbsdk');
const {
LoginManager,
} = FBSDK;
handleFacebookLogin() {
LoginManager.logInWithPermissions(['public_profile', 'publish_actions']).then(
(result) => {
if (result.isCancelled) {
console.log('Login cancelled')
} else {
console.log('Login success with permissions: ' + result.grantedPermissions.toString())
}
},
(error) => {
console.log('Login fail with error: ' + error)
}
)
}
现在,我注意到在 Facebook 的 FBLoginManager.js
中,这是被调用的函数
logInWithPermissions(permissions: Array<string>): Promise<LoginResult> {
return LoginManager.logInWithPermissions(permissions);
},
每当我将鼠标悬停在 LoginManager 上时,它都会显示 未定义。为什么这是未定义的?当它实际上是文件顶部的常量时
const LoginManager = require('react-native').NativeModules.FBLoginManager;
谁能帮帮我?我已经挣扎了4天了。我已经尝试用 cocoapods 安装它,但没有成功。然后做 react-native link react-native-fbsdk
没有成功......很多人建议不要使用 link 而是手动做。
我还能尝试什么?谢谢。
您必须使用库在 Link 二进制文件中添加 libRTCFBSDK.a 文件。要修复“FBSDKShareKit.h 未找到”问题,请将 ~/Documents/FacebookSDK 更改为 $(HOME)/Documents/FacebookSDK