Unity接入ShareSDK实现QQ登录和QQ分享、微信分享
原文链接:Unity接入ShareSDK实现QQ登录和QQ分享、微信分享
由于微信登录需要企业审核,我这里就不说明了,有需要的可以去官网看一下文档,和QQ登录比多了一个打包的步骤。
第一步:到官网申请开发者账号:MOB
第二步:到腾讯QQ开放平台申请开发者账号并创建应用:腾讯开放平台
点击创建应用。然后会有一个:APPID和APPKEY 保留下来它
第三步:在Mob官网创建自己的应用: http://dashboard.mob.com/#!/index
保留下应用的APPID和KEY
第四步:在Mob官网下载Unity专用SDK包进行导入到项目中去:点击下载
第五步:在Unity工程中挂载上:ShareSDK.cs脚本然后将Mob中你创建的应用的Key等信息填写进去
第六步:在ShareSDK脚本中找到DevInfo定义的地方找到QQ类:修改其中的ID和KEY。
就修改成腾讯开放平台中你创建的应用的ID和KEY
第七步:创建一个新的脚本挂载到相同的物体上,然后这样...
- using cn.sharesdk.unity3d;
-
- //定义ShareSDK
- private ShareSDK shareSdk;
-
- void Start()
- {
- //获取ShareSDK
- shareSdk = GetComponent<ShareSDK>();
- }
-
-
- /// <summary>
- /// 用户授权 QQ
- /// </summary>
- public void QQLogin()
- {
- //设置回掉函数
- shareSdk.authHandler = AuthResultHandler;
- //请求授权
- shareSdk.Authorize(PlatformType.QQ);
- }
-
- /// <summary>
- /// 授权回掉
- /// </summary>
- /// <param name="reqID"></param>
- /// <param name="state"></param>
- /// <param name="type"></param>
- /// <param name="result"></param>
- void AuthResultHandler(int reqID, ResponseState state, PlatformType type, Hashtable result)
- {
- switch (state)
- {
- case ResponseState.Success:
- print("authorize success !");
- Hashtable user = shareSdk.GetAuthInfo(PlatformType.QQ);
- print(MiniJSON.jsonEncode(user));
- break;
- case ResponseState.Fail:
- print("fail! throwable stack = " + result["stack"] + "; error msg = " + result["msg"]);
- break;
- case ResponseState.Cancel:
- print("cancel !");
- break;
- }
- }
第八步:设置分享(可以显示全平台分享和指定平台分享)
分享的时候需要传递很多的属性进去:
详解可以参考Demo.cs脚本(SDK里自带的)里面有常用的属性写法
还有一些不常用的属性请看:ShareContent.cs脚本
下面给一个示例代码:
- //在Start初始化的时候设置回调
- void Start()
- {
- //获取ShareSDK
- shareSdk = GetComponent<ShareSDK>();
- shareSdk.shareHandler = ShareResultHandler;
- }
-
-
- public void fenxiang__QQ() //QQ分享
- {
- ShareContent content = new ShareContent();
- content.SetTitle("测试");
- content.SetText("测试文本");
- content.SetTitleUrl(
- "https://www.gamersky.com/showimage/id_gamersky.shtml?http://img1.gamersky.com/image2019/07/20190725_ls_red_141_2/gamersky_042origin_083_2019725182972C.jpg");
- content.SetImageUrl(
- "https://www.gamersky.com/showimage/id_gamersky.shtml?http://img1.gamersky.com/image2019/07/20190725_ls_red_141_2/gamersky_042origin_083_2019725182972C.jpg");
- content.SetShareType(ContentType.Image);
- shareSdk.ShareContent(PlatformType.QQ, content);
- }
-
- public void fenxiang_WX()
- {
- ShareContent content = new ShareContent();
- content.SetTitle("标题");
- content.SetText("内容");
- content.SetImageUrl("https://www.gamersky.com/showimage/id_gamersky.shtml?http://img1.gamersky.com/image2019/07/20190725_ls_red_141_2/gamersky_042origin_083_2019725182972C.jpg");
- content.SetUrl("");
- content.SetShareType(ContentType.Image);
- shareSdk.ShareContent(PlatformType.WeChat, content);
- }
-
- //以下为回调的定义:
- void ShareResultHandler(int reqID, ResponseState state, PlatformType type, Hashtable result)
- {
- myConsole.text += type.ToString();
- switch (state)
- {
- case ResponseState.Success:
- print("分享成功" + MiniJSON.jsonEncode(result));
- break;
- case ResponseState.Fail:
- print("分享失败");
- break;
- case ResponseState.Cancel:
- print("分享取消");
- break;
- }
- }
上面的这种写法是指定平台分享:
如果将
shareSdk.ShareContent(PlatformType.QQ, content);
替换成:
ssdk.ShowPlatformList(null, content, 100, 100);
即可以显示全平台分享
其中分享传递的参数大家需要根据分享的平台来进行设定!
可以参考Demo.cs或者关注Mob的技术论坛:http://bbs.mob.com/forum.php