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

http://blog.csdn.net/u012322710/article/details/52851254



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


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


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


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


五.  写代码

[csharp]  view plain  copy
  1. using UnityEngine;  
  2. using System.Collections;  
  3. using UnityEngine.UI;  
  4. using cn.sharesdk.unity3d; //导入ShareSdk  
  5.   
  6.   
  7.   
  8.   
  9. public class ShareDemo : MonoBehaviour {  
  10.   
  11.   
  12.     private ShareSDK shareSdk;  
  13.     public  Text message;  
  14.   
  15.     
  16.     void Start () {  
  17.   
  18.         shareSdk = GetComponent<ShareSDK>();  
  19.   
  20.         //分享回调事件  
  21.         shareSdk.shareHandler += ShareResultHandler;  
  22.         //授权回调事件  
  23.         shareSdk.authHandler += AuthResultHandler;  
  24.         //用户信息事件  
  25.         shareSdk.showUserHandler += GetUserInfoResultHandler;  
  26.     }  
  27.   
  28.   
  29.     //分享  
  30.     public void OnShareClick()  
  31.     {  
  32.         ShareContent content = new ShareContent();  
  33.   
  34.         //这个地方要参考不同平台需要的参数    可以看ShareSDK提供的   分享内容参数表.docx  
  35.         content.SetText("快来和我一起玩这个游戏吧!");                            //分享文字  
  36.         content.SetImageUrl("https://f1.webshare.mob.com/code/demo/img/4.jpg");   //分享图片  
  37.         content.SetTitle("标题title");                                            //分享标题  
  38.         content.SetTitleUrl("http://www.qq.com");  
  39.         content.SetSite("Mob-ShareSDK");  
  40.         content.SetSiteUrl("http://www.mob.com");  
  41.         content.SetUrl("http://www.sina.com");                                    //分享网址  
  42.         content.SetComment("描述");  
  43.         content.SetMusicUrl("http://up.mcyt.net/md5/53/OTg1NjA5OQ_Qq4329912.mp3");//分享类型为音乐时用  
  44.         content.SetShareType(ContentType.Webpage);  
  45.   
  46.   
  47.         //shareSdk.ShowPlatformList(null, content, 100, 100);                      //弹出分享菜单选择列表  
  48.         shareSdk.ShowShareContentEditor(PlatformType.QQ, content);                 //指定平台直接分享  
  49.     }  
  50.   
  51.   
  52.       
  53.     // 分享结果回调  
  54.     void ShareResultHandler (int reqID, ResponseState state, PlatformType type, Hashtable result)  
  55.     {   //成功  
  56.         if (state == ResponseState.Success)  
  57.         {  
  58.             message.text =("share result :");  
  59.             message.text = (MiniJSON.jsonEncode(result));   
  60.         }  
  61.         //失败  
  62.         else if (state == ResponseState.Fail)  
  63.         {  
  64.             message.text = ("fail! error code = " + result["error_code"] + "; error msg = " + result["error_msg"]);  
  65.         }  
  66.         //关闭  
  67.         else if (state == ResponseState.Cancel)   
  68.         {  
  69.             message.text = ("cancel !");  
  70.         }  
  71.     }  
  72.   
  73.   
  74.     //授权  
  75.     public void OnAuthClick()  
  76.     {  
  77.         //请求QQ授权//请求这个授权是为了获取用户信息来第三方登录  
  78.         shareSdk.Authorize(PlatformType.QQ);  
  79.     }  
  80.   
  81.   
  82.     //授权结果回调  
  83.     void AuthResultHandler(int reqID, ResponseState state, PlatformType type, Hashtable result)  
  84.     {     
  85.         if (state == ResponseState.Success)  
  86.         {  
  87.             message.text = ("authorize success !");  
  88.   
  89.             //授权成功的话,获取用户信息  
  90.             shareSdk.GetUserInfo(type);  
  91.              
  92.   
  93.         }  
  94.         else if (state == ResponseState.Fail)  
  95.         {  
  96.             message.text = ("fail! error code = " + result["error_code"] + "; error msg = " + result["error_msg"]);  
  97.         }  
  98.         else if (state == ResponseState.Cancel)  
  99.         {  
  100.             message.text = ("cancel !");  
  101.         }  
  102.     }  
  103.   
  104.   
  105.     //获取用户信息  
  106.     void GetUserInfoResultHandler(int reqID, ResponseState state, PlatformType type, Hashtable result)  
  107.     {  
  108.         if (state == ResponseState.Success)  
  109.         {  
  110.   
  111.             //获取成功的话 可以写一个类放不同平台的结构体,用PlatformType来判断,用户的Json转化成结构体,来做第三方登录。  
  112.             switch (type)  
  113.             {  
  114.                 case PlatformType.QQ:  
  115.                      message.text = (MiniJSON.jsonEncode(result));  //Json  
  116.   
  117.                     break;  
  118.             }  
  119.   
  120.               
  121.         }  
  122.         else if (state == ResponseState.Fail)  
  123.         {  
  124.             message.text = ("fail! error code = " + result["error_code"] + "; error msg = " + result["error_msg"]);  
  125.         }  
  126.         else if (state == ResponseState.Cancel)  
  127.         {  
  128.             message.text = ("cancel !");  
  129.         }  
  130.     }  
  131.   
  132.   
  133. }  


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


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


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



Demo下载地址: http://download.csdn.net/detail/u012322710/9657229


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


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


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


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


五.  写代码

[csharp]  view plain  copy
  1. using UnityEngine;  
  2. using System.Collections;  
  3. using UnityEngine.UI;  
  4. using cn.sharesdk.unity3d; //导入ShareSdk  
  5.   
  6.   
  7.   
  8.   
  9. public class ShareDemo : MonoBehaviour {  
  10.   
  11.   
  12.     private ShareSDK shareSdk;  
  13.     public  Text message;  
  14.   
  15.     
  16.     void Start () {  
  17.   
  18.         shareSdk = GetComponent<ShareSDK>();  
  19.   
  20.         //分享回调事件  
  21.         shareSdk.shareHandler += ShareResultHandler;  
  22.         //授权回调事件  
  23.         shareSdk.authHandler += AuthResultHandler;  
  24.         //用户信息事件  
  25.         shareSdk.showUserHandler += GetUserInfoResultHandler;  
  26.     }  
  27.   
  28.   
  29.     //分享  
  30.     public void OnShareClick()  
  31.     {  
  32.         ShareContent content = new ShareContent();  
  33.   
  34.         //这个地方要参考不同平台需要的参数    可以看ShareSDK提供的   分享内容参数表.docx  
  35.         content.SetText("快来和我一起玩这个游戏吧!");                            //分享文字  
  36.         content.SetImageUrl("https://f1.webshare.mob.com/code/demo/img/4.jpg");   //分享图片  
  37.         content.SetTitle("标题title");                                            //分享标题  
  38.         content.SetTitleUrl("http://www.qq.com");  
  39.         content.SetSite("Mob-ShareSDK");  
  40.         content.SetSiteUrl("http://www.mob.com");  
  41.         content.SetUrl("http://www.sina.com");                                    //分享网址  
  42.         content.SetComment("描述");  
  43.         content.SetMusicUrl("http://up.mcyt.net/md5/53/OTg1NjA5OQ_Qq4329912.mp3");//分享类型为音乐时用  
  44.         content.SetShareType(ContentType.Webpage);  
  45.   
  46.   
  47.         //shareSdk.ShowPlatformList(null, content, 100, 100);                      //弹出分享菜单选择列表  
  48.         shareSdk.ShowShareContentEditor(PlatformType.QQ, content);                 //指定平台直接分享  
  49.     }  
  50.   
  51.   
  52.       
  53.     // 分享结果回调  
  54.     void ShareResultHandler (int reqID, ResponseState state, PlatformType type, Hashtable result)  
  55.     {   //成功  
  56.         if (state == ResponseState.Success)  
  57.         {  
  58.             message.text =("share result :");  
  59.             message.text = (MiniJSON.jsonEncode(result));   
  60.         }  
  61.         //失败  
  62.         else if (state == ResponseState.Fail)  
  63.         {  
  64.             message.text = ("fail! error code = " + result["error_code"] + "; error msg = " + result["error_msg"]);  
  65.         }  
  66.         //关闭  
  67.         else if (state == ResponseState.Cancel)   
  68.         {  
  69.             message.text = ("cancel !");  
  70.         }  
  71.     }  
  72.   
  73.   
  74.     //授权  
  75.     public void OnAuthClick()  
  76.     {  
  77.         //请求QQ授权//请求这个授权是为了获取用户信息来第三方登录  
  78.         shareSdk.Authorize(PlatformType.QQ);  
  79.     }  
  80.   
  81.   
  82.     //授权结果回调  
  83.     void AuthResultHandler(int reqID, ResponseState state, PlatformType type, Hashtable result)  
  84.     {     
  85.         if (state == ResponseState.Success)  
  86.         {  
  87.             message.text = ("authorize success !");  
  88.   
  89.             //授权成功的话,获取用户信息  
  90.             shareSdk.GetUserInfo(type);  
  91.              
  92.   
  93.         }  
  94.         else if (state == ResponseState.Fail)  
  95.         {  
  96.             message.text = ("fail! error code = " + result["error_code"] + "; error msg = " + result["error_msg"]);  
  97.         }  
  98.         else if (state == ResponseState.Cancel)  
  99.         {  
  100.             message.text = ("cancel !");  
  101.         }  
  102.     }  
  103.   
  104.   
  105.     //获取用户信息  
  106.     void GetUserInfoResultHandler(int reqID, ResponseState state, PlatformType type, Hashtable result)  
  107.     {  
  108.         if (state == ResponseState.Success)  
  109.         {  
  110.   
  111.             //获取成功的话 可以写一个类放不同平台的结构体,用PlatformType来判断,用户的Json转化成结构体,来做第三方登录。  
  112.             switch (type)  
  113.             {  
  114.                 case PlatformType.QQ:  
  115.                      message.text = (MiniJSON.jsonEncode(result));  //Json  
  116.   
  117.                     break;  
  118.             }  
  119.   
  120.               
  121.         }  
  122.         else if (state == ResponseState.Fail)  
  123.         {  
  124.             message.text = ("fail! error code = " + result["error_code"] + "; error msg = " + result["error_msg"]);  
  125.         }  
  126.         else if (state == ResponseState.Cancel)  
  127.         {  
  128.             message.text = ("cancel !");  
  129.         }  
  130.     }  
  131.   
  132.   
  133. }  


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


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


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



Demo下载地址: http://download.csdn.net/detail/u012322710/9657229

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值