【发布时间】:2018-11-19 12:56:26
【问题描述】:
我试图在 AccessToken.getCurrentAccessToken() 中调用 signInWithFacebook 方法,但获取 signInWithFacebook 是未定义的。如果我在 LoginManager.logInWithReadPermissions 函数之外调用该方法,则该方法可以正常工作。我似乎无法调用 LoginManager.logInWithReadPermissions
中的任何方法我是新手,请帮忙。谢谢。
const FBSDK = require('react-native-fbsdk');
const {
LoginManager,
AccessToken,
} = FBSDK;
import React from 'react';
import { Text, View, TouchableOpacity, Image } from 'react-native';
import { connect } from 'react-redux';
import { firebaseActions as auth } from "../actions";
const { signInWithFacebook } = auth;
class FacebookLogin extends React.Component {
constructor() {
super();
this.onSuccess = this.onSuccess.bind(this);
this.onError = this.onError.bind(this);
this.onSignInWithFacebook = this.onSignInWithFacebook.bind(this);
}
async onSignInWithFacebook() {
LoginManager.logInWithReadPermissions(["public_profile"]).then(
function (result) {
if (result.isCancelled) {
console.log("Login was Cancelled");
} else {
AccessToken.getCurrentAccessToken().then(
(data) => {
this.props.signInWithFacebook(data.accessToken, this.onSuccess, this.onError);
}
);
}
},
function (error) {
console.log("An error has occured" + error);
}
);
}
onSuccess({ exists, user }) {
console.log(
"Login Success"
);
}
onError(error) {
console.log(error.message);
}
render() {
return (
<View>
<TouchableOpacity
onPress={this.onSignInWithFacebook}
>
<Text>Login</Text>
</TouchableOpacity>
</View>
);
}
}
export default connect(null, { signInWithFacebook })(FacebookLogin);
【问题讨论】:
-
您是否收到 signInWithFacebook() is undefined 错误或无法调用 signInWithFacebook() of undefined 错误?
-
我不明白您为什么要将它发送到您的道具。没有必要。也许只是在没有 this.props 的情况下调用 signInWithFacebook。
-
我正在使用 redux-thunk 进行 api 调用,如果我不使用 props 它将不起作用。
-
好吧,酷。抱歉没有看到您使用的是 redux。我认为您的问题实际上在于您映射到道具的方式。试试下面的例子:
const mapToProps = () => { return { signInWithFacebook } }; export default connect(mapToProps)(FacebookLogin); -
您是否也可以包含您的身份验证文件?因为如果这不起作用,那么我认为它没有任何价值。确保您的函数名称完全相同并且正确导出。
标签: javascript react-native redux react-native-fbsdk