uni-app Facebook登录问题:manifest配置好后,Ios正常使用登录成功,但安卓端无facebook provider,导致uni.login报错
uni-app Facebook登录问题:manifest配置好后,Ios正常使用登录成功,但安卓端无facebook provider,导致uni.login报错
| 项目信息 | 详细信息 |
|---|---|
| 产品分类 | uniapp/App |
| PC开发环境 | Windows |
| PC开发环境版本号 | 11 |
| HBuilderX类型 | 正式 |
| HBuilderX版本号 | 3.99 |
| 手机系统 | Android |
| 手机系统版本号 | Android 13 |
| 手机厂商 | realme |
| 手机机型 | realme GT2 |
| 页面类型 | vue |
| vue版本 | vue2 |
| 打包方式 | 云端 |
| 项目创建方式 | HBuilderX |
示例代码:
uni.login({
provider: 'facebook',
success: function (loginRes) {
// 登录成功
uni.getUserInfo({
provider: 'facebook',
success: function(info) {
// 获取用户信息成功, info.authResult保存用户信息
}
})
},
fail: function (err) {
// 登录授权失败
// err.code是错误码
}
});
安卓端提示 login:fail provider not find
操作步骤:
uni.getProvider({
service: 'oauth',
success: function (res) {
console.log(res.provider)
}
});
manifest 文件已经勾选了 Facebook 登录,但是打印结果中没有 facebook 所以 uni.login 直接报错
预期结果:
文档:
配置并打包后,通过 uni.getProvider 可以得到配置的结果列表,注意这里返回的是 manifest 配置的,与手机端是否安装微信、QQ、微博无关。
实际结果:
manifest 文件已经勾选了 Facebook 登录,但是打印结果中没有 facebook 所以 uni.login 直接报错
bug描述:
faceBook 登录:
- ios 端:可以正常使用
- 安卓端无法唤起facebook登录,自定义基座提示
login:fail provider not find - 如果使用标准基座,依然没有 facebook 信息
plus.oauth.getServices(function(services) {
console.log(services)
}, function(err) {
// 获取 services 失败
})
// 打印结果如下
[
{
"id": "univerify",
"description": "一键登录",
"nativeClient": true,
"authResult": null,
"userInfo": null
},
{
"id": "weixin",
"description": "微信",
"nativeClient": false,
"authResult": null,
"userInfo": null
},
{
"id": "qq",
"description": "QQ",
"nativeClient": true,
"authResult": null,
"userInfo": null
},
{
"id": "sinaweibo",
"description": "新浪微博",
"nativeClient": false,
"authResult": null,
"userInfo": null
},
{
"id": "google",
"description": "Google",
"nativeClient": true,
"authResult": null,
"userInfo": null
}
]
Facebook 登录都是勾选、配置好了的,而且 ios 端没有问题
更多关于uni-app Facebook登录问题:manifest配置好后,Ios正常使用登录成功,但安卓端无facebook provider,导致uni.login报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html
我也是 您那个facebook 如何开启"public_profile"以及"email"的访问权限 我这个公司验证一直不通过
更多关于uni-app Facebook登录问题:manifest配置好后,Ios正常使用登录成功,但安卓端无facebook provider,导致uni.login报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html
我们这个项目很早就配置好了,我还没要到公司开发者账号。昨天才发现 facebook 登录点击没有反应,安卓 两种基座都是点击就提示 login:fail provider not find 。安卓端才跑到 uni.login 这就报错了
我打的自定义基座 然后用的模拟器 下载了facebook app 但是提示
已解决,目前标准基座无法体验 Facebook 登录
自定义基座 manifest 文件 facebook 登录之前可以不配置 client_token,文档示例图也只配置了appid , 现在把 client_token 配置后可以唤起 facebook 登录
IOS 无法调起
uni.getUserInfo({
provider: ‘facebook’,
success: function(info) {
// 获取用户信息成功, info.authResult保存用户信息
}
})
安卓正常、头像和名字均可获取,IOS则无任何反应
在 uni-app 中,如果你已经配置好了 manifest.json 文件,并且 iOS 端可以正常使用 Facebook 登录,但 Android 端无法找到 Facebook 的 provider,导致 uni.login 报错,可能是以下原因导致的:
1. 检查 manifest.json 配置
确保在 manifest.json 文件中,Android 平台的 Facebook 登录配置正确。以下是一个示例配置:
{
"app-plus": {
"distribute": {
"android": {
"oauth": {
"facebook": {
"appid": "你的Facebook App ID",
"appkey": "你的Facebook App Key"
}
}
},
"ios": {
"oauth": {
"facebook": {
"appid": "你的Facebook App ID",
"appkey": "你的Facebook App Key"
}
}
}
}
}
}
确保 appid 和 appkey 正确填写,并且与 Facebook 开发者平台上的配置一致。
2. 检查 Facebook SDK 配置
在 Facebook 开发者平台上,确保你已经为 Android 应用配置了正确的包名和签名密钥哈希(Key Hash)。如果这些信息不正确,Facebook SDK 将无法正常工作。
-
包名:确保与
manifest.json中的id字段一致。 -
Key Hash:可以通过以下命令生成并上传到 Facebook 开发者平台:
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64输入密码
android,然后将生成的 Key Hash 上传到 Facebook 开发者平台。
3. 检查 Android 项目配置
确保在 Android 项目中,AndroidManifest.xml 文件中有正确的 Facebook 登录配置。通常,uni-app 会自动生成这些配置,但你可以手动检查一下:
<application>
<meta-data
android:name="com.facebook.sdk.ApplicationId"
android:value="@string/facebook_app_id" />
<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>
</application>
4. 检查 uni.login 调用
确保在调用 uni.login 时,正确指定了 provider 为 "facebook":
uni.login({
provider: 'facebook',
success: function (loginRes) {
console.log('登录成功:', loginRes);
},
fail: function (err) {
console.log('登录失败:', err);
}
});
5. 检查 uni-app 版本
确保你使用的是最新版本的 uni-app,因为旧版本可能存在一些兼容性问题。可以通过以下命令更新 uni-app:
npm update @dcloudio/uni-app
6. 调试和日志
如果以上步骤都正确,但仍然无法解决问题,可以尝试在 Android 设备上调试,查看日志输出,以获取更多错误信息。你可以使用 adb logcat 命令来查看日志。
7. 重新编译项目
有时候,修改 manifest.json 后,需要重新编译项目才能生效。尝试删除 unpackage 目录,然后重新编译项目:
rm -rf unpackage
npm run dev:mp-weixin
8. 检查 Facebook SDK 版本
确保你使用的 Facebook SDK 版本与 uni-app 兼容。可以在 build.gradle 中检查 Facebook SDK 的版本:
implementation 'com.facebook.android:facebook-android-sdk:latest.release'

