如何在 React Native 中使用 SFAuthenticationSession 或 SFSafariViewController 实现 Facebook 登录?
Posted
技术标签:
【中文标题】如何在 React Native 中使用 SFAuthenticationSession 或 SFSafariViewController 实现 Facebook 登录?【英文标题】:How do I implement Facebook login with SFAuthenticationSession or SFSafariViewController in React Native? 【发布时间】:2018-01-05 19:44:57 【问题描述】:使用 React Native 实现 Facebook 登录的实际方法是什么?我正在寻找一种 Apple 接受的方式(不会被拒绝)。
显然 react-native-fbsdk 不使用 SFSafariViewController(它只是打开一个 safari webview),这是 Apple 不能接受的……他们因此拒绝了我的应用程序。
我当前的代码。打开 Safari 网络视图。
LoginManager.setLoginBehavior('browser')
class FBLogin extends Component
handleFacebookLogin = async () =>
try
const result = await LoginManager.logInWithReadPermissions([
'public_profile',
'email',
'user_friends',
])
if (result.isCancelled)
alert('Login cancelled')
else
const token = await AccessToken.getCurrentAccessToken()
this.props.login(token)
catch (error)
alert(`login error: $error`)
render()
return (
<LoginButton
type='primary'
block
onPress=() => this.handleFacebookLogin()
>
Login with Facebook
</LoginButton>
)
被苹果拒绝,原因是
我们注意到用户被带到 Safari 登录或注册帐户,这提供了糟糕的用户体验。
【问题讨论】:
【参考方案1】:您可以尝试使用“react-native-app-auth”库。它使用 SFSafariViewController 实现了 SFAuthenticationSession(Apple 为 ios 11 及更高版本验证用户的方式)。 他们有一个非常简洁的文档:http://npm.taobao.org/package/react-native-app-auth
【讨论】:
以上是关于如何在 React Native 中使用 SFAuthenticationSession 或 SFSafariViewController 实现 Facebook 登录?的主要内容,如果未能解决你的问题,请参考以下文章
如何在React Native中使用CreateBottomTabNavigator?
如何在 react-native 中使用 FormData?
如何使用 React-Native 在 iOS 中禁用屏幕截图
React Native:如何使用 expo 在 webview 中制作全屏 youtube 嵌入视频(没有 react-native 链接)