Flutter:在频道app.meedu/flutter_facebook_auth上没有找到方法登录的实现



我想在我的应用程序中使用facebook认证。

我做了所有的文档。

我也试图在这里找到解决方案,但没有帮助我,例如这篇文章和这篇文章

我添加了这个strings.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="facebook_app_id">xxxxxxxxxxx</string>
<string name="fb_login_protocol_scheme">fbxxxxxxxxxxxx</string>
<string name="facebook_client_token">xxxxxxxxxxxxxxxxx</string>
<string name="app_name">xxxx</string>
</resources>

在AndroidManifest.xml中我添加了这个:

<uses-permission android:name="android.permission.INTERNET"/> // before application
<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/>
<meta-data android:name="com.facebook.sdk.ClientToken" android:value="@string/facebook_client_token"/>
<activity android:name="com.facebook.FacebookActivity"
android:configChanges=
"keyboard|keyboardHidden|screenLayout|screenSize|orientation"
android:label="@string/app_name" />
<activity
android:name="com.facebook.CustomTabActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="@string/fb_login_protocol_scheme" />
</intent-filter>
</activity>
<queries>
<provider android:authorities="com.facebook.katana.provider.PlatformProvider" />

my function:

final LoginResult result = await FacebookAuth.instance.login();
if (result.status == LoginStatus.success) {
accessToken = result.accessToken!;
isLogined = true;
final userData = await FacebookAuth.instance.getUserData();   
} else {
print(result.status);
print(result.message);
}

我得到这个错误[ERROR:flutter/lib/ui/ui_dart_state.cc(198)] Unhandled Exception: MissingPluginException(No implementation found for method login on channel app.meedu/flutter_facebook_auth)

通常是"未实现";当您添加新包并进行热重新加载时,或者当平台不受支持时,会导致错误。尝试从冷启动运行应用程序。如果仍然失败,我建议使用firebase_auth包进行身份验证,因为它支持多个提供商,包括Facebook。

从https://facebook.meedu.app/docs/5.x.x/android(在那里你也可以找到更多的相关信息):

安装此插件后,需要在Android上进行配置才能再次运行项目。如果没有这样做,则出现No implementation found错误因为如果配置尚未定义,Android上的Facebook SDK会抛出Exception错误。这个错误还会锁定项目中的其他插件,所以如果这个插件还不需要,要么删除它,要么把它从pubspec中注释出来。yaml文件。

因此,当您添加flutter_facebook_auth插件时,您必须添加in配置以避免此错误。这包括

/android/app/src/main/res/价值/strings.xml:

<string name="facebook_app_id">{your-app-id}</string>
<string name="facebook_client_token">YOUR_CLIENT_TOKEN</string>

/android/app/src/main/AndroidManifest.xml

<uses-permission android:name="android.permission.INTERNET"/>
<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/>
<meta-data android:name="com.facebook.sdk.ClientToken" android:value="@string/facebook_client_token"/>

Android API 30+也添加

<manifest package="com.example.app">
<queries>
<provider android:authorities="com.facebook.katana.provider.PlatformProvider" />
</queries>
...
</manifest>

和关联你的包名和默认类与你的应用在Facebook。

这使我通过了你提到的错误。