2020-03-20 Unity Facebook登錄板壮,分享逗鸣,邀請接入

海外項(xiàng)目需要facebook登錄等功能,國內(nèi)有一些集成sdk特別簡單好用绰精,但是游戲項(xiàng)目需要邀請功能撒璧,所以只能集成原生SDK了,在此記錄一下笨使。

ShareSDK http://www.mob.com/mobService/sharesdk集成sdk卿樱,包挺小的,服務(wù)也很好硫椰,客服隨時都能聯(lián)系上繁调,但是facebook打不開好友列表,很郁悶靶草,只能接原生的了

Facebook 開發(fā)者后臺地址 https://developers.facebook.com/apps/ 需在此注冊應(yīng)用

Facebook原生sdk下載地址 https://developers.facebook.com/docs/unity/downloads/ sdk需接入工程

第一步蹄胰,注冊應(yīng)用

1.注冊facebook賬戶,注冊開發(fā)者奕翔,創(chuàng)建應(yīng)用進(jìn)入下圖頁面(facebook老是被封裕寨,怎么解決...)

image

2.點(diǎn)擊基本填寫應(yīng)用基本信息

image

3.翻到頁面最下面,點(diǎn)擊添加平臺

image

4.以Android為例糠悯,添加完平臺帮坚,包名類名秘鑰都都在項(xiàng)目中自動生成

image

獲取密鑰方式在此:http://www.reibang.com/p/9557a469bcf2

第二步妻往,導(dǎo)入SDK

1.下載sdk導(dǎo)入工程

image

2.點(diǎn)擊設(shè)置

image

填寫項(xiàng)目名稱,編號

將包名试和,類名讯泣,秘鑰填寫到后臺到此sdk接入完成,剩下的就是API的應(yīng)用

image

下面上代碼

public delegate void OnFBLoginFaild(bool isCancel, string errorInfo);

    public delegate void OnFBShareLinkSucced(string postId);
    public delegate void OnFBShareLinkFaild(bool isCancel, string errorInfo);

    public delegate void OnGotFBFriendInGame(string resultJsonStr);

    public delegate void OnGotFBMyInfo(string resultJsonStr);
    public delegate void OnGetFBInfoFaild();

    internal static void GetMyInfo(Action<string> p, object v)
    {
        throw new NotImplementedException();
    }

    public delegate void OnFBInvitedSucceed(string resultJsonStr);

    private static string appLinkUrl;

    /// <summary>
    /// 初始化
    /// </summary>
    public static void Init(Action action)
    {
        if (!FB.IsInitialized)
        {
            FB.Init(() =>
            {

                if (FB.IsInitialized)
                {
                    // Signal an app activation App Event
                    FB.ActivateApp();
                    // Continue with Facebook SDK
                    // ...
                    FBGetAPPLinkUrl();

                    if (action != null)
                    {
                        action();
                    }
                }
                else
                {
                    Debug.Log("Failed to Initialize the Facebook SDK");
                }
            }, OnHideUnity);
        }
        else
        {
            FB.ActivateApp();

            if (action != null)
            {
                action();
            }
        }
    }

    private static 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;
        }
    }

    /// <summary>
    /// 登錄
    /// </summary>
    public static void LoginResult(Action action)
    {
        List<string> perms = new List<string>() { "public_profile", "email", "user_friends" };
        FB.LogInWithReadPermissions(perms, (result) =>
        {
            if (FB.IsLoggedIn)
            {
                // AccessToken class will have session details
                var aToken = Facebook.Unity.AccessToken.CurrentAccessToken;

                if (action != null)
                {
                    action();
                }

            }
            else
            {

                Debug.Log("User cancelled login");
            }

        });
    }

    public static void Share()
    {
       // UpdateManager.Ins.verData.data.iosId = "1459965214";

        if (PlayerManager.Ins.IsFaceBook)
        {
#if UNITY_ANDROID && !UNITY_EDITOR
           FB.ShareLink(new Uri("https://play.google.com/store/apps/details?id=" + UpdateManager.Ins.verData.data.googleId), callback: ShareCallback);
#elif UNITY_IOS && !UNITY_EDITOR
            FB.ShareLink(new Uri("https://apps.apple.com/us/app/face-meme-emoji-gif-maker/id" + UpdateManager.Ins.verData.data.iosId), callback: ShareCallback);
#endif
        }
        else
        {
            PlayerManager.Ins.FackBookInit(() =>
            {
                PlayerManager.Ins.Player.Inquire();
#if UNITY_ANDROID && !UNITY_EDITOR
           FB.ShareLink(new Uri("https://play.google.com/store/apps/details?id=" + UpdateManager.Ins.verData.data.googleId), callback: ShareCallback);
#elif UNITY_IOS && !UNITY_EDITOR
           FB.ShareLink(new Uri("https://apps.apple.com/us/app/face-meme-emoji-gif-maker/id" + UpdateManager.Ins.verData.data.iosId), callback: ShareCallback);
#endif
            });
        }
    }


    private static void ShareCallback(IShareResult result)
    {
        if (result.Cancelled || !String.IsNullOrEmpty(result.Error))
        {
            Debug.Log("ShareLink Error: " + result.Error);
        }
        else if (!String.IsNullOrEmpty(result.PostId))
        {
            // Print post identifier of the shared content
            Debug.Log(result.PostId);
        }
        else
        {
            // Share succeeded without postID
            Debug.Log("ShareLink success!");
        }
    }

    /// <summary>   
    /// 邀請
    /// </summary>
    public static void Invite()
    {
        //string message, IEnumerable<string> to = null, IEnumerable<object> filters = null, IEnumerable<string> excludeIds = null, int? maxRecipients = default(int?), string data = "", string title = "", FacebookDelegate<IAppRequestResult> callback = null
        // FB.AppRequest(APP.facebookID,null/*to*/,null/**/,null);

        //FB.AppRequest("Come play this great game!", null, null, null, null, null, null, 
        //        delegate (IAppRequestResult result) {
        //            Debug.Log(result.RawResult); Debug.Log(result.RawResult);
        //});


    }

    /// <summary>
    /// 獲取自己的信息
    /// </summary>
    /// <param name="onGotFBMyInfo"></param>
    public static void GetMyInfo(OnGotFBMyInfo onGotFBMyInfo = null, OnGetFBInfoFaild onGetFaild = null)
    {
        //Logger.LogUI("GetMyInfo");
        //沒有授權(quán)
        if (FB.IsLoggedIn == false)
        {
            if (onGetFaild != null)
            {
                onGetFaild();
            }
            return;
        }

        //Logger.LogUI("API");
        FB.API("me?fields=id,name,picture", HttpMethod.GET, (result) =>
        {
            //Logger.LogUI(result.RawResult);
            if (onGotFBMyInfo != null)
            {
                onGotFBMyInfo(result.RawResult);
            }
        });
    }

    /// <summary>
    ///  獲取APPLink, 獲取失敗阅悍,TODO
    /// </summary>
    public static void FBGetAPPLinkUrl()
    {
        FB.GetAppLink((result) =>
        {
            Debug.Log(result.RawResult);
            Debug.Log("Ref: " + result.Ref);
            Debug.Log("TargetUrl: " + result.TargetUrl);
            Debug.Log("Url: " + result.Url);
            appLinkUrl = result.Url;
            //Logger.LogUI(appLinkUrl);
        });
    }

DeepLink實(shí)現(xiàn)好渠,基于ShareSdk實(shí)現(xiàn)

深度鏈接,我們分享邀請生成的鏈接节视,要實(shí)現(xiàn)的目的是用戶點(diǎn)擊鏈接拳锚,如果已經(jīng)安裝應(yīng)用,拉起應(yīng)用寻行,并攜帶參數(shù)霍掺,如果沒有安裝跳轉(zhuǎn)第三方,去下載應(yīng)用

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末拌蜘,一起剝皮案震驚了整個濱河市杆烁,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌简卧,老刑警劉巖兔魂,帶你破解...
    沈念sama閱讀 221,888評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異举娩,居然都是意外死亡析校,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,677評論 3 399
  • 文/潘曉璐 我一進(jìn)店門铜涉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來智玻,“玉大人,你說我怎么就攤上這事骄噪∩欣В” “怎么了?”我有些...
    開封第一講書人閱讀 168,386評論 0 360
  • 文/不壞的土叔 我叫張陵链蕊,是天一觀的道長事甜。 經(jīng)常有香客問我,道長滔韵,這世上最難降的妖魔是什么逻谦? 我笑而不...
    開封第一講書人閱讀 59,726評論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮陪蜻,結(jié)果婚禮上邦马,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好滋将,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,729評論 6 397
  • 文/花漫 我一把揭開白布邻悬。 她就那樣靜靜地躺著,像睡著了一般随闽。 火紅的嫁衣襯著肌膚如雪父丰。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,337評論 1 310
  • 那天掘宪,我揣著相機(jī)與錄音蛾扇,去河邊找鬼。 笑死魏滚,一個胖子當(dāng)著我的面吹牛镀首,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播鼠次,決...
    沈念sama閱讀 40,902評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼更哄,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了须眷?” 一聲冷哼從身側(cè)響起竖瘾,我...
    開封第一講書人閱讀 39,807評論 0 276
  • 序言:老撾萬榮一對情侶失蹤沟突,失蹤者是張志新(化名)和其女友劉穎花颗,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體惠拭,經(jīng)...
    沈念sama閱讀 46,349評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡扩劝,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,439評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了职辅。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片棒呛。...
    茶點(diǎn)故事閱讀 40,567評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖域携,靈堂內(nèi)的尸體忽然破棺而出簇秒,到底是詐尸還是另有隱情,我是刑警寧澤秀鞭,帶...
    沈念sama閱讀 36,242評論 5 350
  • 正文 年R本政府宣布趋观,位于F島的核電站,受9級特大地震影響锋边,放射性物質(zhì)發(fā)生泄漏皱坛。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,933評論 3 334
  • 文/蒙蒙 一豆巨、第九天 我趴在偏房一處隱蔽的房頂上張望剩辟。 院中可真熱鬧,春花似錦、人聲如沸贩猎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,420評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽吭服。三九已至敏弃,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間噪馏,已是汗流浹背麦到。 一陣腳步聲響...
    開封第一講書人閱讀 33,531評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留欠肾,地道東北人瓶颠。 一個月前我還...
    沈念sama閱讀 48,995評論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像刺桃,于是被迫代替她去往敵國和親粹淋。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,585評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 級別:★☆☆☆☆標(biāo)簽:「iOS 接入 Google、Facebook 登錄」「Firebase Google」「F...
    QiShare閱讀 7,923評論 6 11
  • 由于近期工作需要自己抽時間搞了一下第三方分享,這里使用的是shareSDK的第三方,在使用的過程中有一些心得和體會...
    燦爛先森閱讀 11,294評論 29 69
  • 級別:★☆☆☆☆標(biāo)簽:「iOS 接入 Google、Facebook 登錄」「iOS Google 登錄」「iOS...
    QiShare閱讀 3,346評論 1 4
  • 這個季節(jié)來的是如此的陌生进泼、匆忙 還來不及欣賞夏季的百花齊放 就已到了果實(shí)累累的季節(jié) 望著夜空中玄月漸漸豐滿 聽著秋...
    海海_b7f9閱讀 139評論 0 1
  • 簡書鉆和簡書貝乳绕,我一直沒搞懂它們的價(jià)值绞惦,有看到簡書鉆下面約等于人民幣127.46,內(nèi)心還是滿開心的洋措,可不知道如何花...
    禧珍閱讀 741評論 1 4