Я пытаюсь использовать react-native-fbsdk
для входа в систему. Я выполнил шаги из React Native FBSDK. У меня не было ошибок от xcode, когда я его запустил.
Когда я запускаю react-native run-ios
, у меня нет ошибки, и я даже вижу facebook Login Button
, но когда я нажимаю кнопку, это не приводит меня на страницу входа в facebook. Ничего не произошло. Ниже мой код:
import React, {Component} from 'react';
import {Platform, StyleSheet, Text, View} from 'react-native';
import { LoginButton, AccessToken } from 'react-native-fbsdk';
export default class App extends Component<Props> {
loginFacebook(){
LoginManager.logInWithReadPermissions(["public_profile"]).then(
function(result) {
if (result.isCancelled) {
console.info("Login cancelled");
} else {
console.info(
"Login success with permissions: " +
result.grantedPermissions.toString()
);
}
},
function(error) {
console.info("Login fail with error: " + error);
}
);
}
render() {
return (
<View style = {styles.container}>
<LoginButton
onLoginFinished = {
(error, result) => {
if (error) {
console.info("login has error: " + result.error);
} else if (result.isCancelled) {
console.info("login is cancelled.");
} else {
AccessToken.getCurrentAccessToken().then(
(data) => {
console.info(data.accessToken.toString())
}
)
}
}
}
onLogoutFinished = {() => console.info("logout.")}/>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
},
});
Есть идеи, что происходит?
Можете ли вы попробовать использовать этот код из fbsdk, он передает некоторые реквизиты кнопке, вы можете забыть это сделать:
<LoginButton
onLoginFinished = {
(error, result) => {
if (error) {
console.info("login has error: " + result.error);
} else if (result.isCancelled) {
console.info("login is cancelled.");
} else {
AccessToken.getCurrentAccessToken().then(
(data) => {
console.info(data.accessToken.toString())
}
)
}
}
}
onLogoutFinished = {() => console.info("logout.")}/>
Другим способом вы можете попробовать использовать вместо этого LoginManager, используя этот код: Создайте кнопку для входа в facebook:
<button onclick = {this.loginFacebook}> </button>
Создайте функцию для входа в Facebook:
loginFacebook(){
LoginManager.logInWithReadPermissions(["public_profile"]).then(
function(result) {
if (result.isCancelled) {
console.info("Login cancelled");
} else {
console.info(
"Login success with permissions: " +
result.grantedPermissions.toString()
);
}
},
function(error) {
console.info("Login fail with error: " + error);
}
);
}
Вы можете где-нибудь разместить свой код? Я проверю для вас.
Можете ли вы создать еще одну кнопку (<button onclick = {this.loginFacebook}> </button>) и импортировать {LoginManager}, чтобы протестировать функцию loginFacebook ()?
Я сделал <Button onPress = {this.loginFacebook} title = "Login"> </Button>
, но когда я нажимаю кнопку, ничего не происходит.
В вашем коде нет ничего плохого. Если ничего не случилось, я думаю, вы что-то пропустили, когда устанавливаете библиотеку. Попробуйте переустановить fbsdk снова, npm start --clear-cache, и снова запустите проект.
Мне удалось успешно использовать приведенный выше код или код, использованный в примере из developers.facebook.com/docs/react-native/login, в обоих случаях в результате на некоторое время запрашивается модальное окно с загружаемым изображением, пока оно не завершится с ошибкой Login fail with error: Error: net::ERR_NAME_NOT_RESOLVED
. Я пытаюсь использовать локальный эмулятор Android Studio. Что я должен увидеть после щелчка? Приложение должно открывать браузер устройства для ввода данных доступа? Можно ли протестировать этот поток в эмуляторе?
Я понял. Я не знаю, сколько времени я трачу на то, чтобы это исправить!
Оказалось, что это ошибка с FacebookSDKs-iOS-4.39.0
. Мне пришлось понизить ее до FacebookSDKs-iOS-4.38.0
.
С этого сайта Я скачал старую версию, и она заработала!
Я исправил это, запустив приложение с терминала react-native run-android
Я работаю с: "react-native": "0.60.5", "react-native-fbsdk": "^ 1.0.4"
Спасибо за комментарии. Я пробовал код, но выдает ошибку
Cannot read property 'error' of null