shareSdk 新浪微博的登录分享测试

2021-03-18 11:47发布

using cn.sharesdk.unity3d;

using System.Collections;

using System.Collections.Generic;

using UnityEngine;


public class ShareSDKManager : MonoBehaviour {


    private static ShareSDKManager _instance;

    public static ShareSDKManager Instance

    {

        get

        {

            return _instance;

        }

    }


    [HideInInspector]

    public ShareSDK ssdk;

// Use this for initialization

void Start () {

        //单例

        _instance = this;

        //加载不销毁

        DontDestroyOnLoad(this.gameObject);

        //在ShareSDK的awake方法中做了初始化

        ssdk = GetComponent<ShareSDK>();

        //shareSDKUtils.InitSDK(appKey,appSecret); //初始化


        //跳转场景

        UnityEngine.SceneManagement.SceneManager.LoadScene(1);


    }



}



using cn.sharesdk.unity3d;

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

using UnityEngine.Networking;


public class Login : MonoBehaviour

{


    ShareSDK ssdk;

    // Use this for initialization

    void Start()

    {

        //绑定单例的sdk

        ssdk = ShareSDKManager.Instance.ssdk;

        //指定授权结果的回调函数

        ssdk.authHandler = OnAuthResultHandker;

    }


    //使用新浪微博账号登录

    public void OnSinaLoginBtn()

    {

        //检测指定的平台是否已经授权过了

        if (ssdk.IsAuthorized(PlatformType.SinaWeibo))

        {

            //提示           


            //将授权信息,写入到自定有的文件中 ... 查看授权信息内容...

            Tools.WriteFile(Application.persistentDataPath, "AuthInfo.data", ssdk.GetAuthInfo(PlatformType.SinaWeibo).toJson());

            Tools.MakeToast("微博用户:" + ssdk.GetAuthInfo(PlatformType.SinaWeibo)["userName"] + "授权成功");


            //跳转到游戏场景

            UnityEngine.SceneManagement.SceneManager.LoadScene(1);

        }

        else

        {

            //指定平台的授权

            ssdk.Authorize(PlatformType.SinaWeibo);

        }


    }


    public void ShareWeibo()

    {

        ShareContent content = new ShareContent();

        content.SetTitle("这是我的第一个试应用 ..."); //看起来没什么用

        content.SetText("我要分享到微博 ....");  //要分享的内容

        content.SetUrl("https://blog.csdn.net/czhenya"); //分享链接

        content.SetImageUrl("https://blog.csdn.net/czhenya");


        content.SetShareType(ContentType.Webpage); //分享类型

        ssdk.ShareContent(PlatformType.SinaWeibo, content);

        ssdk.shareHandler += OnAuthResultHandker;//添加回调

    }


    public void ShareImg() //试用未成功 2018.12.21

    {

        ShareContent content = new ShareContent();

        content.SetImageUrl(Application.dataPath + "czy.png");

        content.SetShareType(ContentType.Image);


        ssdk.ShareContent(PlatformType.SinaWeibo, content);

        ssdk.shareHandler += OnAuthResultHandker;

    }


    /// <summary>

    /// 回调函数

    /// </summary>

    /// <param name="reqID"></param>

    /// <param name="state">授权状态</param>

    /// <param name="type">授权平台类型</param>

    /// <param name="data">有关授权的数据</param>

    void OnAuthResultHandker(int reqID, ResponseState state, PlatformType type, Hashtable data)

    {

        switch (state) //授权状态...

        {

            case ResponseState.Success: //授权成功


                //ssdk.GetAuthInfo(type); //授权信息

                //自行编写工具类,写为文件

                Tools.WriteFile(Application.persistentDataPath, "AuthResult.data", data.toJson());

                Tools.WriteFile(Application.persistentDataPath, "AuthInfo.data", ssdk.GetAuthInfo(type).toJson());


                Tools.MakeToast("微博用户:" + ssdk.GetAuthInfo(type)["userName"] + "授权成功");


                //登录

                UnityEngine.SceneManagement.SceneManager.LoadScene(1);

                break;

            case ResponseState.Fail:   //授权失败

                //清空授权信息

                ssdk.CancelAuthorize(type);

                Tools.MakeToast("授权失败");

                break;

            case ResponseState.Cancel: //取消授权

                ssdk.CancelAuthorize(type);

                Tools.MakeToast("取消授权");

                break;

            default: break;

        }

    }


}


using System.Collections;

using System.Collections.Generic;

using System.IO;

using UnityEngine;


/// <summary>

/// 工具类

/// </summary>

public class Tools {


    /// <summary>

    /// 写为文件

    /// </summary>

    /// <param name="path">路径</param>

    /// <param name="name">名称</param>

    /// <param name="info">信息</param>

    public static void WriteFile(string path, string name, string info)

    {

        StreamWriter sw;

        FileInfo fi = new FileInfo(path + "/" + name);

        sw = fi.CreateText();

        sw.Close();

        sw.Dispose();


    }


    /// <summary>

    /// 读取文件

    /// </summary>

    /// <param name="path"></param>

    /// <param name="name"></param>

    /// <returns></returns>

    public static string ReadFile(string path, string name)

    {

        StreamReader sr;

        FileInfo fi = new FileInfo(path + "/" + name);

        sr = fi.OpenText();

        string info = sr.ReadToEnd();

        sr.Close();

        sr.Dispose();

        return info;

    }


    //通过C# 代用Java代码 实现(类似再按一下退出)的吐司提示效果

    public static void MakeToast(string info)

    {

        AndroidJavaObject currenActivity = new AndroidJavaObject("com.unity3d.player.UnityPlayer").GetStatic<AndroidJavaObject>("currentActivity");

        AndroidJavaClass Toast = new AndroidJavaClass("android.widget.Toast");

        currenActivity.Call("runOnUiThread", new AndroidJavaRunnable(() =>

        {

            Toast.CallStatic<AndroidJavaObject>("makeText", currenActivity, info, Toast.GetStatic<int>("LENGTH_LONG")).Call("show");

        }));


    }

}





        ssdk.CancelAuthorize(type);

                Tools.MakeToast("授权失败");

                break;

            case ResponseState.Cancel: //取消授权

                ssdk.CancelAuthorize(type);

                Tools.MakeToast("取消授权");

                break;

            default: break;

        }

    }


}



————————————————

版权声明:本文为CSDN博主「妳是我改卟了的bug」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/Czhenya/article/details/85176891