首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当我尝试将用户登录到firebase时,react-native-facebook-login返回错误

当我尝试将用户登录到firebase时,react-native-facebook-login返回错误
EN

Stack Overflow用户
提问于 2017-01-14 20:20:17
回答 1查看 701关注 0票数 0

我已经尝试了我能想到的每一种方法,但每天都遇到同样的问题。

我正在构建一个react原生移动应用程序。我使用firebase作为我的数据库,并使用react-native-facebook-login包让用户登录。

目前包工作正常,我输入fb详细信息,返回正确的数据,用户‘登录’,我可以控制台日志的结果,但尝试做任何其他返回一个错误。

我试过了:

传递一个我执行firebase登录的操作(Redux),错误:

代码语言:javascript
运行
复制
Cannot read property 'loginUser' of undefined

结果数据的setState,错误:

代码语言:javascript
运行
复制
this.setState is not a function

我不确定如何使用凭据进行firebase身份验证,但我很高兴稍后能弄清楚这一点,我只需要首先能够访问数据!

我的组件:

代码语言:javascript
运行
复制
...
class FBLoginWrapper extends Component {
   state = { user: null };
   render() {
   return (
      <FBLogin
         buttonView={<FBSignInView />}
         ref={(fbLogin) => { this.fbLogin = fbLogin }}
         loginBehavior={FBLoginManager.LoginBehaviors.Native}
         permissions={["email","user_friends"]}
         onLogin={function (e) { this.props.loginUser(e); }}
         onLoginFound={function (e) { this.setState({ user: e }); }}
      />
   );
}
...

如果您需要更多代码,请让我知道。我列出了我在onLogin和onLoginFound下尝试过的两种不同的方法,但都失败了。当我有了可以工作的东西时,我将为两者使用一个实现。

理想情况下,我希望将操作命名为{this.props.loginUser(e)},但是如果我必须通过setState来调用,那么在这一点上也没问题。

EN

回答 1

Stack Overflow用户

发布于 2017-01-14 20:29:47

如果只需要访问返回的数据,则应该使用onLoginFinished属性。

这是我在我的一个应用程序中使用LoginButton的方式: AccessToken是FBSDK包的一部分

代码语言:javascript
运行
复制
const FBSDK = require('react-native-fbsdk');
const {
  LoginButton,
  AccessToken
} = FBSDK;

....

<View>
<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) => {
            let token = data.accessToken.toString();

            global.storage.save({
                key: 'loginState',
                rawData: { 
                    token: token
                },
            });

            firestack.auth.signInWithProvider('facebook', token, '')
            .then((user)=>{
                Actions.tabbar({profile:user});
            });
          }
        )
      }
    }
  }
  onLogoutFinished={() => alert("logout.")}/>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41649914

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档