zl程序教程

您现在的位置是:首页 >  其他

当前栏目

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

测试 分享 登录 微博 新浪
2023-09-11 14:20:51 时间

//todo … 待完善 …

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");
        }));

    }
}