我用Facebook应用编写了一个不稳定的登录名。
它在Android上正常工作。 在iOS模拟器和真实的iPhone设备上,它不起作用。两者都拥有iOS 13.2。
pub spec.yaml文件
firebase_auth: ^0.6.6
flutter_facebook_login: ^1.1.1
flutter_auth_buttons: ^0.3.1
main.dart文件
import 'package:flutter/material.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter_facebook_login/flutter_facebook_login.dart';
import 'package:flutter_auth_buttons/flutter_auth_buttons.dart';
void main() => runApp(MyApp());
class MyApp extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return _MyAppState();
}
}
class _MyAppState extends State<MyApp> {
FirebaseAuth _auth = FirebaseAuth.instance;
bool isLogged = false;
FirebaseUser myUser;
Future<FirebaseUser> _loginWithFacebook() async {
var facebookLogin = new FacebookLogin();
var result = await facebookLogin.logInWithReadPermissions(['email']);
debugPrint(result.status.toString());
if (result.status == FacebookLoginStatus.loggedIn) {
FirebaseUser user =
await _auth.signInWithFacebook(accessToken: result.accessToken.token);
return user;
}
return null;
}
void _login() {
_loginWithFacebook().then((response) {
if (response != null) {
myUser = response;
setState(() {
isLogged = true;
});
}
});
}
void _logout() async {
await _auth.signOut().then((response) {
setState(() {
isLogged = false;
});
});
}
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Login App',home: Scaffold(
appBar: AppBar(
title: Text(isLogged ? 'Profile Page' : 'Login App'),actions: <Widget>[
IconButton(
onpressed: _logout,icon: Icon(Icons.power_settings_new),)
],),body: Center(
child: isLogged
? Column(
mainAxisAlignment: MainAxisAlignment.center,children: <Widget>[
Text('Name: ' + myUser.displayName),Image.network(myUser.photoUrl),],)
: FacebookSignInButton(
onpressed: _login,);
}
}
我在Xcode项目中正确添加了plist文件。并根据以下步骤正确配置了Facebook开发人员的iOS版本: https://developers.facebook.com/docs/facebook-login/ios
我在旧版构建和新构建系统之间更改了Xcode中的项目工作区设置。我仍然遇到错误。
我尝试将以下内容添加到pod文件中,但仍然出现错误
pod 'FBSDKCoreKit','~> 4.44'
这里甚至所有建议的解决方案 How to fix build error with FBSDKLoginKit in Xcode
我得到的错误是
No known class method for selector 'dictionary:setObject:forKey:'
我还尝试在发布规范文件中更改Firebase版本和Facebook Flutter登录版本(在1.1.1和1.2.0之间,因为我不想使用AndroidX),但仍然出现错误。
请注意,我已将Xcode更新到最新版本,并且错误没有得到解决。
我将所有pod的Xcode中的iOS部署版本更改为版本8。错误未修复!