unity 接入 Facebook 登录

Unity 接入 Facebook 登录


Unity 接入 Facebook 登陆

使用unity sdk
到这
https://developers.facebook.com/docs/unity/
下载unity sdk
导入到unity

创建应用
点击我的应用创建应用
2
输入应用名称与邮箱
创建应用

设置

然后在设置基本里面点击添加平台 iOS 和安卓
iOS 填个包名就可以了
安卓 要填包名 入口activity 以及密钥
开发密钥获取方法
Mac 系统:

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64

Win 系统:

keytool -exportcert -alias androiddebugkey -keystore “C:\Users\USERNAME.android\debug.keystore” | “PATH_TO_OPENSSL_LIBRARY\bin\openssl” sha1 -binary | “PATH_TO_OPENSSL_LIBRARY\bin\openssl” base64

发布密钥:

keytool -exportcert -alias YOUR_RELEASE_KEY_ALIAS -keystore YOUR_RELEASE_KEY_PATH | openssl sha1 -binary | openssl base64

需要安装 Openssl

具体可参考:https://developers.facebook.com/docs/facebook-login/android/

然后到unity 中,菜单栏
Edit Setting

选择 Edit Setting ,

Edit Setting
输入 Name ,ID , ClientToken

ClientToken 在设置 -》 高级 里面
蓝色部分是自动填充的,不用管
然后点击 Regenerate
最后 富强上网工具也是要的

还有就是VPN 有些不好用的会出现能够拉起界面却无法通讯,最后登陆失败。
改包名 跟这些都没关系,只要设置那边把包名改掉就可以了,其他不用动。

还有提交审核的时候,如果没有用到除公共信息之外的权限,可以直接发布,不需要审核,用到了也可以直接发布,只不过申请的这些权限获取不到,急的情况下可以这样处理,先发布,后审核。
我遇到的坑: 审核的时候,Facebook审核用的模拟器不支持arm64 的,一直报错,去掉后就好了。

至于代码,自带的Sample 里面都有,参考那个就可以了。

附代码:

private void Init()
        {
            if (!FB.IsInitialized)
            {
                Log(" Initialize the Facebook SDK");
                FB.Init(InitCallback, OnHideUnity);
            }
            else
            {
                // Already initialized, signal an app activation App Event
                FB.ActivateApp();
                Login();
            }
        }

        private void InitCallback()
        {
            if (FB.IsInitialized)
            {
                // Signal an app activation App Event
                FB.ActivateApp();
                // Continue with Facebook SDK
                BasicLog.Log("Login ===========");
                Login();
            }
            else
            {
                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;
            }
        }

        private void Login()
        {
            var perms = new List<string>() { "public_profile", "user_gender"}; // "user_friends","user_age_range" 
            FB.LogInWithReadPermissions(perms, AuthCallback);
        }

        private void AuthCallback(ILoginResult result)
        {
            if (FB.IsLoggedIn)
            {
                // AccessToken class will have session details
                // 在这里添加我们登录成功的逻辑 
                // 比如获取token
                string aToken = Facebook.Unity.AccessToken.CurrentAccessToken.TokenString;
                BasicLog.Log(aToken);
                if (_showToken != null)
                    _showToken.Invoke(aToken);

		//发给服务器
            }
            else
            {
                if (!string.IsNullOrEmpty(result.Error))
                {
                    Log("Error Response:\n" + result.Error);
                }
                else if (result.Cancelled)
                {
                    Log("Cancelled Response:\n" + result.RawResult);
                }
                else if (!string.IsNullOrEmpty(result.RawResult))
                {
                    Log("Success Response:\n" + result.RawResult);
                }
                else
                {
                    Log("Empty Response\n");
                }
            }
        }

        public void FBShareLink(string uri, string contentTitle, string contentDesc, string picUri, UnityAction onFBShareLinkSucced = null, UnityAction onFBShareLinkFaild = null)
        {
            FBShareLink(new Uri(uri), contentTitle, contentDesc, new Uri(picUri), onFBShareLinkSucced, onFBShareLinkFaild);
        }

        private void FBShareLink(Uri uri, string contentTitle, string contentDesc, Uri picUri, UnityAction onFBShareLinkSucced = null, UnityAction onFBShareLinkFaild = null)
        {
            FB.ShareLink(uri, contentTitle, contentDesc, picUri, (result) =>
            {
                if (result.Cancelled || !string.IsNullOrEmpty(result.Error))
                {
                    Log("ShareLink Faild");
                    if (onFBShareLinkFaild != null)
                    {
                        onFBShareLinkFaild();
                    }
                }
                else
                {
                    Log("ShareLink success!");
                    if (onFBShareLinkSucced != null)
                    {
                        onFBShareLinkSucced();
                    }
                }
            });
        }
已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页