Unity接入Facebook登录


2018-11-09更新

跳转至Facebook App登录坑点总结

  1. IOS: 如果前期接入过微信,需要注意重载的openURL函数,该函数会导致跳转报错。
  2. 安卓: Unity插件中的Debug Android Key Hash(密钥散列)有误,需要从代码中获取后填写至Facebook后台。

环境信息:

Unity 5.6.6
Facebook SDK 7.13.0


Facebook后台
  1. 登录Facebook开发者后台
  2. 创建自己的应用


    创建自己的Facebook应用
  3. 记录AppId并进入设置界面


    设置界面
  4. 点击添加平台,添加IOS和Android


    添加平台
  5. 填写信息
    IOS: BundleId


    IOS设置

Android:Google Play 包名、类名、密钥散列

Android设置

其中类名密钥散列可以通过Unity中导入的Facebook SDK中获得。

  1. 添加完信息后,点击页面下方的保存更改

导入Facebook SDK
  1. 下载Facebook SDK的Unity版本,下载地址
  2. 双击导入Unity


    Unity目录

    注:截图中删除了Example目录

  3. 点击菜单Facebook->Edit Settings


    Unity设置
  • 将Facebook后台生成的AppId添加入设置
  • 在Android设置中的ClassName(类名)Debug Android Key Hash(密钥散列)填入Facebook后台
    注意坑点: 在Unity中生成的散列是错误的,需要通过代码的方式获取,具体参考StackOverflow的讨论
  1. 点击Regenerate Android Manifest生成安卓工程所需要的manifest文件

代码集成
  1. 启动时初始化Facebook SDK
public void Init ()
{
    if (!FB.IsInitialized) {
        // Initialize the Facebook SDK
        FB.Init(InitCallback, OnHideUnity);
    } else {
        // Already initialized, signal an app activation App Event
        FB.ActivateApp();
     }
}

初始化函数中用到的回调函数如下

private void InitCallback ()
{
    if (FB.IsInitialized) {
        // Signal an app activation App Event
        FB.ActivateApp();
        // Continue with Facebook SDK
    } else {
        Debug.Log("Failed to Initialize the Facebook SDK");
    }
}
private void OnHideUnity (bool isGameShown)
{
    if (!isGameShown) {
        // Pause the game - we will need to hide
        Time.timeScale = 0;
    } else {
        // Resume the game - we're getting focus again
        Time.timeScale = 1;
     }
}
  1. 执行登录
public void Login()
{
    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
      // 在这里添加我们登录成功的逻辑 
      // 比如获取token
      var aToken = Facebook.Unity.AccessToken.CurrentAccessToken;
      // ......
    } else {
      Debug.Log("User cancelled login");
    }
}

END
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,676评论 25 709
  • 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...
    hw1212阅读 13,134评论 2 59
  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,032评论 3 119
  • 翻看手机日历,2016年8月20号。 明天就要出差去河南郑州了。之前也出过几次差,但是这一次时间比较长,月底能否回...
    猴子无脑阅读 335评论 0 0
  • 重阳节就这样悄无声息过去了,我原来并不觉得它可以跟春节,中秋节,端午节这样大众的节日相媲美,对它的印象只有小时候学...
    刘取丹昕赵汗情阅读 578评论 0 1