【Unity】Unity接入ShareSDK實現QQ登錄和QQ分享、微信分享

由於微信登錄需要企業審覈,我這裏就不說明了,有需要的可以去官網看一下文檔,和QQ登錄比多了一個打包的步驟。

第一步:到官網申請開發者賬號:MOB 

第二步:到騰訊QQ開放平臺申請開發者賬號並創建應用:騰訊開放平臺

點擊創建應用。然後會有一個:APPID和APPKEY 保留下來它

第三步:在Mob官網創建自己的應用: http://dashboard.mob.com/#!/index

保留下應用的APPID和KEY

第四步:在Mob官網下載Unity專用SDK包進行導入到項目中去:點擊下載

第五步:在Unity工程中掛載上:ShareSDK.cs腳本然後將Mob中你創建的應用的Key等信息填寫進去

第六步:在ShareSDK腳本中找到DevInfo定義的地方找到QQ類:修改其中的ID和KEY。

就修改成騰訊開放平臺中你創建的應用的ID和KEY

第七步:創建一個新的腳本掛載到相同的物體上,然後這樣...

using cn.sharesdk.unity3d;

//定義ShareSDK
private ShareSDK shareSdk;

    void Start()
    {
        //獲取ShareSDK
        shareSdk = GetComponent<ShareSDK>();
    }


    /// <summary>
    /// 用戶授權  QQ
    /// </summary>
    public void QQLogin()
    {
        //設置回掉函數
        shareSdk.authHandler = AuthResultHandler;
        //請求授權
        shareSdk.Authorize(PlatformType.QQ);
    }

    /// <summary>
    /// 授權回掉
    /// </summary>
    /// <param name="reqID"></param>
    /// <param name="state"></param>
    /// <param name="type"></param>
    /// <param name="result"></param>
    void AuthResultHandler(int reqID, ResponseState state, PlatformType type, Hashtable result)
    {
        switch (state)
        {
            case ResponseState.Success:
                print("authorize success !");
                Hashtable user = shareSdk.GetAuthInfo(PlatformType.QQ);
                print(MiniJSON.jsonEncode(user));
                break;
            case ResponseState.Fail:
                print("fail! throwable stack = " + result["stack"] + "; error msg = " + result["msg"]);
                break;
            case ResponseState.Cancel:
                print("cancel !");
                break;
        }
    }

第八步:設置分享(可以顯示全平臺分享和指定平臺分享)

分享的時候需要傳遞很多的屬性進去:

詳解可以參考Demo.cs腳本(SDK裏自帶的)裏面有常用的屬性寫法

還有一些不常用的屬性請看:ShareContent.cs腳本

下面給一個示例代碼:

//在Start初始化的時候設置回調
    void Start()
    {
        //獲取ShareSDK
        shareSdk = GetComponent<ShareSDK>();
        shareSdk.shareHandler = ShareResultHandler;
    }


public void fenxiang__QQ() //QQ分享
    {
        ShareContent content = new ShareContent();
        content.SetTitle("測試");
        content.SetText("測試文本");
        content.SetTitleUrl(
            "https://www.gamersky.com/showimage/id_gamersky.shtml?http://img1.gamersky.com/image2019/07/20190725_ls_red_141_2/gamersky_042origin_083_2019725182972C.jpg");
        content.SetImageUrl(
            "https://www.gamersky.com/showimage/id_gamersky.shtml?http://img1.gamersky.com/image2019/07/20190725_ls_red_141_2/gamersky_042origin_083_2019725182972C.jpg");
        content.SetShareType(ContentType.Image);
        shareSdk.ShareContent(PlatformType.QQ, content);
    }

    public void fenxiang_WX()
    {
        ShareContent content = new ShareContent();
        content.SetTitle("標題");
        content.SetText("內容");
       content.SetImageUrl("https://www.gamersky.com/showimage/id_gamersky.shtml?http://img1.gamersky.com/image2019/07/20190725_ls_red_141_2/gamersky_042origin_083_2019725182972C.jpg");
        content.SetUrl("");
        content.SetShareType(ContentType.Image);
        shareSdk.ShareContent(PlatformType.WeChat, content);
    }

    //以下爲回調的定義:
    void ShareResultHandler(int reqID, ResponseState state, PlatformType type, Hashtable result)
    {
        myConsole.text += type.ToString();
        switch (state)
        {
            case ResponseState.Success:
                print("分享成功" + MiniJSON.jsonEncode(result));
                break;
            case ResponseState.Fail:
               print("分享失敗");
                break;
            case ResponseState.Cancel:
                print("分享取消");
                break;
        }
    }

上面的這種寫法是指定平臺分享:

如果將

 shareSdk.ShareContent(PlatformType.QQ, content);

替換成:

ssdk.ShowPlatformList(null, content, 100, 100);

即可以顯示全平臺分享

其中分享傳遞的參數大家需要根據分享的平臺來進行設定!

可以參考Demo.cs或者關注Mob的技術論壇:http://bbs.mob.com/forum.php

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章