ShareSDK社会化分享

ShareSDK社会化分享_第1张图片
ShareSDK.png
首先先进入ShareSDK官网注册一个账号然后进入后台添加一个应用,我们先添加新浪微博的分享,可以在ShareSDK里面找到这篇文章, http://bbs.mob.com/thread-89-1-4.html
,先去新浪微博开放平台先申请授权, http://open.weibo.com/进入新浪微博的开放平台官网点击应用接入,然后开始创建一款应用,可以看到下图我们需要包名签名
ShareSDK社会化分享_第2张图片
image.png
包名就填写unity里面的package Name,那么签名呢?,这个就需要我们自己去获取了,下面说说怎么获取签名
image.png
在cmd命令提示符里面,找到你所安装的JDK的bin目录下转到JDK所在的文件目录下
ShareSDK社会化分享_第3张图片
image.png
输入以下命令

keytool -genkey -alias liangshenkey -keyalg RSA -validity 2400 -keystore KeyTool.keystore

image.png
然后一步一步按提示走填写完所有的信息填写完全,填写完全后就可以在JDK下的bin文件里面找到签名文件了
ShareSDK社会化分享_第4张图片
image.png
然后在unity里面的playerSettings里面找到Publicshing Setting就可以把刚刚的签名文件导入了,导入签名文件和密码
ShareSDK社会化分享_第5张图片
image.png
然后把包名和其他设置填写下,打包APK包安装到手机上。下面去Github上去下载新浪微博的MD5签名工具 https://github.com/mobileresearch/weibo_android_sdk/blob/master/app_signatures.apk。下载下来后安装到手机上,打开签名工具,输入unity里面填写的包名,生成就能生成签名码了。
ShareSDK社会化分享_第6张图片
image.png
这样我们包名和签名就搞定了,新浪微博的其他信息自行填写就OK了。然后我们回到高级信息里面把授权回调页填写下,这个是有用的。
ShareSDK社会化分享_第7张图片
image.png
下面就去ShareSDK官网把SDK下载下拉导入到unity里面 http://www.mob.com/download,导入后新建个初始化的InitScene场景把场景里的灯光和摄像机删除,创建一个空物体ShareSDKGame添加ShareSDK的脚本,填写上Mob网上的之前我们创建应用的Key和Secret
ShareSDK社会化分享_第8张图片
image.png
然后在把新浪微博的key和secret填写上,Redirect Url则填写之前新浪微博上的授权回调页的Url。
ShareSDK社会化分享_第9张图片
image.png
随后我们创建脚本ShareSDKManager,页挂载在ShareSDKGame上。

using cn.sharesdk.unity3d;
using UnityEngine;

public class ShareSDKManager : MonoBehaviour {

    private static ShareSDKManager _instance;
    public static ShareSDKManager Instance
    {
        get
        {
            return _instance;
        }
    }
    [HideInInspector]
    public ShareSDK ssdk;
    void Start () {
        _instance = this;
        DontDestroyOnLoad(gameObject);
        ssdk = GetComponent();
        UnityEngine.SceneManagement.SceneManager.LoadScene(1);
    }
}

然后我们再创建个登陆的Login场景,首先把场景搭建好,然后添加个空物体LoginManager,上面挂载Login脚本.


ShareSDK社会化分享_第10张图片
image.png
using cn.sharesdk.unity3d;
using System.Collections;
using UnityEngine;
using UnityEngine.UI;

public class Info : MonoBehaviour {

    private Image userIcon;
    private Text userName;
    private Text userID;
    private Text DetailPosition;
    ShareSDK ssdk;

    private 
    // Use this for initialization
    void Start () {
        userIcon = GameObject.Find("UserIcon").GetComponent();
        userName = GameObject.Find("UserName").GetComponent();
        userID = GameObject.Find("UserID").GetComponent();
        userID = GameObject.Find("DetailPosition").GetComponent();
        GameObject.Find("EnterButton").GetComponent

还有一个工具类

using System.IO;
using UnityEngine;

public static class Utility{
    public static void WriteFile(string path, string name, string info)
    {
        StreamWriter sw;
        FileInfo fi = new FileInfo(path + "/" + name);
        sw = fi.CreateText();
        sw.WriteLine(info);
        sw.Close();
        sw.Dispose();
    }
    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;
    }
    public static void  MakeToast(string info)
    {
        AndroidJavaObject currentActivity = new AndroidJavaObject("com.unity3d.player.UnityPlayer").GetStatic("currentActivity");
        AndroidJavaClass Toast = new AndroidJavaClass("android.widget.Toast");
        currentActivity.Call("runOnUiThread", new AndroidJavaRunnable(() =>
         {
             Toast.CallStatic("maskText", currentActivity, info, Toast.GetStatic("LENGTH_LONG")).Call("show");
         }
        ));
    }
}

接下来在创建游玩的场景Info,创建好后搭建场景


ShareSDK社会化分享_第11张图片
image.png

这样我们就完成了微博账号的分享,最后我们再打包出来
ShareSDK社会化分享_第12张图片
image.png
因为之前创建的应用需要通过审核,我这里没有通过,所以最后我们在再新浪微博开放平台的测试信息里添加个自己的账号
ShareSDK社会化分享_第13张图片
image.png
这时候把包安装到手机上就可以看到效果了
ShareSDK社会化分享_第14张图片
最后效果.png

我们也可以在手机内部存储-Adroid-data-“你的包名”-files里面的AuthInfo.data里面取到我们获取到的授权信息,这是我们自己打印出来的信息结果,可以看到我们可以获取到微博的头像,id和名字。
ShareSDK社会化分享_第15张图片
image.png
下面我们将用户名字\ID\头像显示到我们的游戏页面上,并且去获取用户的一些详细信息,首先在Info场景中创建空对象InfoManager,并在上面添加Info脚本.写入代码
using cn.sharesdk.unity3d;
using System.Collections;
using UnityEngine;
using UnityEngine.UI;

public class Info : MonoBehaviour {

    private Image userIcon;
    private Text userName;
    private Text userID;
    private Text DetailPosition;
    ShareSDK ssdk;

    private 
    // Use this for initialization
    void Start () {
        userIcon = GameObject.Find("UserIcon").GetComponent();
        userName = GameObject.Find("UserName").GetComponent();
        userID = GameObject.Find("UserID").GetComponent();
        DetailPosition= GameObject.Find("DetailPosition").GetComponent();
        ssdk = ShareSDKManager.Instance.ssdk;
        ssdk.showUserHandler = OnGetUserInfoResultHandler;
        //从事先保存的文件中读取基本信息
        Hashtable authInfo = Utility.ReadFile(Application.persistentDataPath,"AuthInfo.dat").hashtableFromJson();
        StartCoroutine(LoadUserIcon(authInfo["userIcon"].ToString()));
        userName.text = authInfo["userName"].ToString();
        userID.text = authInfo["userID"].ToString();
    }

    IEnumerator LoadUserIcon(string url)
    {
        WWW www = new WWW(url);
        yield return www;
        if (www.isDone && www.error==null)
        {
            Texture2D texture2D = www.texture;
            userIcon.sprite = Sprite.Create(texture2D, new Rect(0, 0, texture2D.width, texture2D.height), Vector2.zero);
        }
    }

    public void OnEnterButtonClick()
    {
        UnityEngine.SceneManagement.SceneManager.LoadScene(3);
    }
    public void OnDetailButtonClick()
    {
        ssdk.GetUserInfo(PlatformType.SinaWeibo);
    }
    public void OnSignOutButtonClick()
    {
        //取消指定平台的授权
        ssdk.CancelAuthorize(PlatformType.SinaWeibo);
        UnityEngine.SceneManagement.SceneManager.LoadScene(1);
    }
    void OnGetUserInfoResultHandler(int reqID, ResponseState state, PlatformType type, Hashtable data)
    {
        //授权成功
        if (state == ResponseState.Success)
        {
            Utility.WriteFile(Application.persistentDataPath, "UserInfo.dat", data.toJson());
            DetailPosition.text = "您的位置:" +  Utility.UniCodeTostring(data["location"].ToString());
        }
        else if (state == ResponseState.Fail)
        {
 
            Utility.MakeToast("获取用户详情失败!");
        }
        else if (state == ResponseState.Cancel)
        {

            Utility.MakeToast("获取用户详情操作被取消!");
        }

    }
}

并在在工具类Utility里面再添加一个函数

    public static string UniCodeTostring(string unicode)
    {
        Regex reg = new Regex(@"(?i)\\[uU]([0-9a-f]{4})");
        return reg.Replace(unicode, delegate (Match m)
         {
             return ((char)Convert.ToInt32(m.Groups[1].Value, 16)).ToString();
         });
    }

这样我们在将我们的工程打包出来运行就可以看到我们的游戏页面获取到了我们的头像名字和ID还有详细的信息。地理位置等等


ShareSDK社会化分享_第16张图片
image.png

并且我们也可以在手机内部存储-Adroid-data-“你的包名”-files里面的UserInfo.data里面看到用户的详细信息。这里自行去查看。

你可能感兴趣的:(ShareSDK社会化分享)