如何在本地和facebook sdk中管理用户帐户状态?

时间:2017-04-15 08:53:20

标签: ios facebook facebook-graph-api react-native

在我的本机应用程序中,我通过Facebook处理用户帐户。我已成功将Facebook SDK连接到我的应用程序,并且我正在显示“使用Facebook登录”按钮,当点击时,用户可以通过Facebook登录并更改按钮文本以“注销”。如果用户点击“注销”,它会将其注销并更改文本以进行登录。基本上,我似乎具有登录和注销工作的基本功能。

我有一些问题,关于如何在登录到Facebook或不登录Facebook方面做任何关于用户状态的事情。

首先,用户的登录似乎不会在应用程序生命周期之间持续存在。如果我关闭应用程序并重新打开它,它会提示我再次登录,而不是记住我刚刚登录并自动登录Facebook。有没有办法告诉它这样做/通过FacebookSDK轻松缓存登录?我想必须有,但Facebook的文档似乎很少。

此外,有没有办法通过布尔属性或只是说他们已登录的内容来检查用户的状态。

以下是我目前的代码,它成功显示了Facebook登录和注销按钮,以及处理登录和注销流程。

/**
 * Sample React Native App
 * https://github.com/facebook/react-native
 * @flow
 */

import React, { Component } from 'react';
import {
  AppRegistry,
  StyleSheet,
  Text,
  View
} from 'react-native';

const FBSDK = require('react-native-fbsdk');
const {
  LoginButton,
  AccessToken,
  GraphRequest,
  GraphRequestManager,
} = FBSDK;

export default class FBReact extends Component {
  render() {
    return (
      <View>
        <Text style={styles.welcome}>
          Welcome to React Native!
        </Text>
        <Text style={styles.instructions}>
          To get started, edit index.ios.js
        </Text>
        <Text style={styles.instructions}>
          Press Cmd+R to reload,{'\n'}
          Cmd+D or shake for dev menu
        </Text>
        <LoginButton
          publishPermissions={["publish_actions"]}
          onLoginFinished={
            (error, result) => {
              if (error) {
                alert("login has error: " + result.error);
              } else if (result.isCancelled) {
                alert("login is cancelled.");
              } else {
                AccessToken.getCurrentAccessToken().then(
                  (data) => {
                    alert(data.accessToken.toString())
                  }
                )
              }
            }
          }
          onLogoutFinished={() => alert("logout.")}
          onLogInFound={() => alert("log in found.")}/>
      </View>
    );
  }
}


AppRegistry.registerComponent('FBReact', () => FBReact);

1 个答案:

答案 0 :(得分:0)

  1. 要存储数据,您可以使用AsyncStorage AsyncStorage 是一个简单的,未加密的,异步的,持久的键值存储系统,对应用程序来说是全局的。它将数据存储在本地存储中,因此您可以在下次启动时访问它们。

  2. 您可以使用Access Tokens。检查 AccessToken.getCurrentAccessToken(),如果有有效的访问令牌,则该用户仍然登录。