我目前正在为我的 Reach Native 应用程序设置 Facebook 身份验证。在react-native-fbsdk设置出现常见问题之后,现在Facebook应用程序事件可以工作并且LoginManager会加载。
我的问题:授权后,LoginManager 将我重定向回应用程序,然后向我显示错误:
登录失败
我正在使用非常标准的 LoginManager 实现:
const FBSDK = require('react-native-fbsdk');
const {
LoginManager,
AccessToken,
} = FBSDK;
export default class FacebookAuth extends Component {
facebook(){
LoginManager.logInWithReadPermissions(['public_profile', 'email']).then(
function(result) {
if (result.isCancelled) {
alert('Login cancelled');
} else {
alert('Login success with permissions: '
+result.grantedPermissions.toString());
}
},
function(error) {
alert('Login fail with error: ' + error);
}
);
你有什么指点给我吗?
我已经查过了:
我正在运行:iOS 10 和react-native 0.38.0。
谢谢!
使用 Facebook SDK 登录时出错 — React Native
问题是 Facebook SDK 仍然保留之前的会话令牌,当我尝试再次登录时,我收到此错误,要解决此问题,我所要做的就是从 LoginManager 调用 logOut 方法。
之前尝试这样做
LoginManager.logInWithReadPermissions...
LoginManager.logOut();
尝试不同的解决方案几个小时后,由于 Cassiano Montanari 和 zavadpe 的评论,我成功修复了它不正确的安装
我最终得到了这个配置:
Pod 文件:
pod 'FBSDKCoreKit', '4.38.0'
pod 'FacebookSDK', '4.38.0'
pod 'FBSDKShareKit', '4.38.0'
pod 'FBSDKLoginKit', '4.38.0'
您需要确保在 Link Binary With Libraries 中添加
libRCTFBSDK.a
并从 pod 文件中删除 'react-native-fbsdk', :path => '../node_modules/react-native-fbsdk'
。
我的问题在我将 FBSDK 升级到 4.39 后开始出现,如果我使用
pod 'react-native-fbsdk', :path => '../node_modules/react-native-fbsdk'
,我找不到任何方法在 pod 文件中指定 SDK 版本。
我认为一种选择是使用Carthage,但我还没有尝试过。
根据 Cassiano Montanari 的评论,从 4.39.0 降级到 4.38.0 是解决方案。我整个下午都在为此苦苦挣扎,降级立即解决了它。
import { AccessToken, LoginManager } from "react-native-fbsdk"
const facebooksignUp = async () => {
try {
if (Platform.OS === "android") {
LoginManager.setLoginBehavior("web_only")
}
const result = await LoginManager.logInWithPermissions([
"email",
"public_profile"
])
if (result.isCancelled) {
} else {
await AccessToken.getCurrentAccessToken()
.then(async res => {
const token = res.accessToken.toString()
let data = { access_token: token }
props.facebookLoginUser(data)
})
.catch(err => {
err
})
}
} catch (err) {
err
}
}
我想,我解决了这个问题。 我仍然不是 100% 清楚为什么,但它与此相关: 如何在 iOS 10 上使用 Facebook iOS SDK
启用钥匙串访问后,身份验证起作用。