Unity集成Facebook SDK Android构建登录异常问题咨询
Unity集成Facebook SDK登录异常:提示"Something went wrong"且日志显示"User cancelled login"的原因分析
问题背景
在Unity项目中集成Facebook SDK实现登录功能,已完成以下操作:
- 编写登录脚本并挂载到场景对象
- 创建按钮并将
FbLogin方法设为OnClick事件监听器 - 完成Android构建,且已配置所需密钥和令牌
初始代码与首次问题
初始代码如下:
using System.Collections.Generic; using UnityEngine; using Facebook.Unity; class FacebookLoginSystem { private void Awake() { FB.Init(SetInit, OnHideUnity); } void SetInit() { if (FB.IsLoggedIn) { Debug.Log("Logged in Successfuly!"); } else { Debug.Log("FB is not loggid in"); } } void OnHideUnity(bool isGameShown) { if (isGameShown) { Time.timeScale = 1; } else { Time.timeScale = 0; } } public void FbLogin() { List<string> permessions = new List<string>(); permessions.Add("public_profile"); FB.LogInWithReadPermissions(permessions, AuthCallResult); } private void AuthCallResult(ILoginResult result) { if (result.Error != null) { Debug.Log(result.Error); } else { if (FB.IsLoggedIn) { Debug.Log("FB logged in"); Debug.Log(result.RawResult); FB.API("/me?fields=first_name", HttpMethod.GET, callbackData); } else { Debug.Log("Login Failed!"); } } } }
构建包中点击按钮时,出现提示:"Something went wrong, we are working on it..."
代码更新后日志信息
替换FbLogin和AuthCallback方法,添加序列化字段TextForLogging查看构建日志,日志显示**"User cancelled login"**。更新后的代码片段:
public void FbLogin() { var perms = new List<string>() { "public_profile", "email" }; FB.LogInWithReadPermissions(perms, AuthCallback); } private void AuthCallback(ILoginResult result) { if (FB.IsLoggedIn) { // AccessToken class will have session details var aToken = Facebook.Unity.AccessToken.CurrentAccessToken; // Print current access token's User ID Debug.Log(aToken.UserId); TextForLogging.text += $"\n{aToken.UserId}"; // Print current access token's granted permissions foreach (string perm in aToken.Permissions) { Debug.Log(perm); TextForLogging.text += $"\n{perm}"; } FB.API("/me?fields=first_name", HttpMethod.GET, callbackData); } else { Debug.Log("User cancelled login"); TextForLogging.text += "\nUser cancelled login"; } }
问题原因分析
Facebook应用后台配置错误
- 密钥哈希(Key Hash)不匹配:调试包和发布包使用不同签名时,需分别添加对应密钥哈希到Facebook开发者后台,若缺失或错误,会导致登录验证失败,SDK判定为用户取消。
- 包名不一致:Unity项目的
Bundle Identifier需与Facebook后台配置的Android平台包名完全一致(大小写敏感),否则登录请求会被拦截。 - 开发模式限制:若应用处于开发模式,仅添加到测试用户列表的账号可登录,普通账号登录会被阻断,表现为类似取消登录的错误。
SDK初始化未完成
原代码中的FacebookLoginSystem未继承MonoBehaviour,挂载到场景对象后Awake方法不会自动执行,导致SDK从未初始化,登录请求直接失败,被SDK识别为用户取消。权限与平台环境问题
- 权限配置缺失:若在Facebook后台未配置
email等权限的使用说明,权限请求会触发异常,导致登录流程中断。 - 设备环境异常:测试设备未安装Facebook应用或应用版本过低,WebView登录流程易出现异常;网络无法正常连接Facebook服务器,请求超时也会被判定为用户取消。
- 权限配置缺失:若在Facebook后台未配置
内容的提问来源于stack exchange,提问作者user20640763
相关产品推荐
相关产品推荐

