You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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服务器,请求超时也会被判定为用户取消。

内容的提问来源于stack exchange,提问作者user20640763

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 03:50:20