Unity3D之使用ShareSDK做分享和第三方登录功能

一.  从    http://www.mob.com/    下载Unity3d的ShareSDK包。

二.  注册一个账号,随便创建一个应用,获得一个APP Key ( 这一步不是必须的,但是可以统计分析数据,很实用)。

三.  导入ShareSDKForU3D.unitypackage插件包,在Unity里,随便在一个物体上拖进shareSDK这个脚本,选择为安卓项目。

四.  修改shareSDK组建,填入刚才获得的APP Key ,修改下面的各种平台的对接参数,需要去各个平台申请,如果不修改这个脚本的话,使用的都是官方的测试数据。不需要的平台可以直接在ShareSDKDevInfo.cs中注释掉。

五.  写代码

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using cn.sharesdk.unity3d; //导入ShareSdk
 
 
 
 
public class ShareDemo : MonoBehaviour {
 
 
    private ShareSDK shareSdk;
    public  Text message;
 
  
	void Start () {
 
        shareSdk = GetComponent<ShareSDK>();
 
        //分享回调事件
        shareSdk.shareHandler += ShareResultHandler;
        //授权回调事件
        shareSdk.authHandler += AuthResultHandler;
        //用户信息事件
        shareSdk.showUserHandler += GetUserInfoResultHandler;
	}
 
 
    //分享
    public void OnShareClick()
    {
        ShareContent content = new ShareContent();
 
        //这个地方要参考不同平台需要的参数    可以看ShareSDK提供的   分享内容参数表.docx
        content.SetText("快来和我一起玩这个游戏吧!");                            //分享文字
        content.SetImageUrl("https://f1.webshare.mob.com/code/demo/img/4.jpg");   //分享图片
        content.SetTitle("标题title");                                            //分享标题
        content.SetTitleUrl("http://www.qq.com");
        content.SetSite("Mob-ShareSDK");
        content.SetSiteUrl("http://www.mob.com");
        content.SetUrl("http://www.sina.com");                                    //分享网址
        content.SetComment("描述");
        content.SetMusicUrl("http://up.mcyt.net/md5/53/OTg1NjA5OQ_Qq4329912.mp3");//分享类型为音乐时用
        content.SetShareType(ContentType.Webpage);
 
 
        //shareSdk.ShowPlatformList(null, content, 100, 100);                      //弹出分享菜单选择列表
        shareSdk.ShowShareContentEditor(PlatformType.QQ, content);                 //指定平台直接分享
    }
 
 
	
    // 分享结果回调
    void ShareResultHandler (int reqID, ResponseState state, PlatformType type, Hashtable result)
	{   //成功
		if (state == ResponseState.Success)
		{
            message.text =("share result :");
            message.text = (MiniJSON.jsonEncode(result)); 
		}
        //失败
		else if (state == ResponseState.Fail)
		{
            message.text = ("fail! error code = " + result["error_code"] + "; error msg = " + result["error_msg"]);
		}
        //关闭
		else if (state == ResponseState.Cancel) 
		{
            message.text = ("cancel !");
		}
	}
 
 
    //授权
    public void OnAuthClick()
    {
        //请求QQ授权//请求这个授权是为了获取用户信息来第三方登录
        shareSdk.Authorize(PlatformType.QQ);
    }
 
 
    //授权结果回调
    void AuthResultHandler(int reqID, ResponseState state, PlatformType type, Hashtable result)
    {   
        if (state == ResponseState.Success)
        {
            message.text = ("authorize success !");
 
            //授权成功的话,获取用户信息
            shareSdk.GetUserInfo(type);
           
 
        }
        else if (state == ResponseState.Fail)
        {
            message.text = ("fail! error code = " + result["error_code"] + "; error msg = " + result["error_msg"]);
        }
        else if (state == ResponseState.Cancel)
        {
            message.text = ("cancel !");
        }
    }
 
 
    //获取用户信息
    void GetUserInfoResultHandler(int reqID, ResponseState state, PlatformType type, Hashtable result)
    {
        if (state == ResponseState.Success)
        {
 
            //获取成功的话 可以写一个类放不同平台的结构体,用PlatformType来判断,用户的Json转化成结构体,来做第三方登录。
            switch (type)
            {
                case PlatformType.QQ:
                     message.text = (MiniJSON.jsonEncode(result));  //Json
 
                    break;
            }
 
            
        }
        else if (state == ResponseState.Fail)
        {
            message.text = ("fail! error code = " + result["error_code"] + "; error msg = " + result["error_msg"]);
        }
        else if (state == ResponseState.Cancel)
        {
            message.text = ("cancel !");
        }
    }
 
 
}

六.  修改安卓配置文件  AndroidManifest.xml

这个地方写了很多ShareSDK需要的安卓权限什么的,不修改也是能运行的,以后如果要和其他安卓功能结合需要修改。

结束语:还可以,挺好用的,支持安卓和IOS,而且还带统计,据说还是免费的。但是他本身带的MiniJSON真的没有LitJson好用,如果要做第三方登录还是用LitJson来解析比较好。还有授权以后转会应用,就重新打开了,导致接受不到信息。这个以后再研究吧。

猜你喜欢

转载自blog.csdn.net/weixin_39706943/article/details/81075193