关注公众号,获取更多干货。
下面是正文:
最近在研究第三方登录的问题,由于之前用过mob的东西,所以这次就直接去mob的官网看ShareSDK是支持第三方授权登录的,所以我就开始了搞一搞第三方登录的问题。
其中遇到了不少坑,所以写出一个小Demo,让新手们绕过这个坑,更快速的进入开发。
但是我建议大家还是多看看官方的Demo和API,这样下次使用才不会忘。
首先
官网:http://sharesdk.mob.com/
在SDK下载中下载ShareSDK for Unity
然后下载Zip
下载后先创建工程
然后按照我的个人习惯,创建出我自己的文件夹,方便与别人项目合并。
将这个包导入工程
导入后大家可能会发现有报错。
大家不要慌,将平台切换为安卓即可。
在Build Setting下
准备工作就绪,大家现在该去官网注册一个账号,并且添加一个应用,得到AppKey与AppSecret
此处省略注册教程、、、
拿到AppKey与AppSecret,就可以在官网查看你的后台授权情况。
下面开始写代码了。
官方给出的Package中有Demo,而且注释也很清楚,自学能力强的朋友可以将Demo打包出来,然后看着Log一步一步去学习。
由于我不太喜欢GUI的脚本,所以我的代码写的都是UGUI的。
在贴我的代码之前,如果看了官方的Demo的应该知道,将刚刚申请下来的AppKey和AppSecret添加到ShareSDK的脚本中。
下面就是我的脚本:
把别的东西都去掉了,只留了与QQ有用的东西。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using cn.sharesdk.unity3d;
using UnityEngine.UI;
using LitJson;
public class Aries_QQLogin : MonoBehaviour {
/// <summary>
/// ShareSDK
/// </summary>
private ShareSDK shareSdk;
/// <summary>
/// 为了防止有的朋友不方便看log,在这里做一个假的控制台
/// </summary>
public Text myConsole;
private static Aries_QQLogin _Instance;
/// <summary>
/// 获取单例
/// </summary>
/// <returns></returns>
public static Aries_QQLogin GetInstance()
{
if (null == _Instance)
{
_Instance = new Aries_QQLogin();
}
return _Instance;
}
/// <summary>
/// 当前登录的QQ用户信息
/// </summary>
public QQuserInfo CurrentQQuserInfo;
/// <summary>
/// QQ用户信息
///
/// 说明:我只用到了四个属性,所以构造器只写了四个,如果用到更多可以自行增加
/// </summary>
public class QQuserInfo
{
/// <summary>
/// 用户ID
/// </summary>
public string userID = "";
/// <summary>
/// 用户名
/// </summary>
public string userName = "";
/// <summary>
/// 用户头像
/// </summary>
public string userIcon = "";
/// <summary>
/// 用户记号
/// </summary>
public string token = "";
public string refresh_token = "";
public int openID;
public int expiresIn;
public string userGender = "";
public string tokenSecret = "";
public string unionID = "";
public long expiresTime;
public QQuserInfo()
{
}
public QQuserInfo(string uID, string uName, string uIcon, string uToken)
{
this.userID = uID;
this.userName = uName;
this.userIcon = uIcon;
this.token = uToken;
}
}
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)
{
//如果授权成功
if (state == ResponseState.Success)
{
print("authorize success !");
//在控制台输出
myConsole.text += "\n" + "authorize success !";
Hashtable user = shareSdk.GetAuthInfo(PlatformType.QQ);
print("get user info result =====================>:");
print(MiniJSON.jsonEncode(user));
JsonData jd = JsonMapper.ToObject(MiniJSON.jsonEncode(user));
//实例化当前登录的QQ用户信息
CurrentQQuserInfo = new QQuserInfo(jd["userID"].ToString(), jd["userName"].ToString(), jd["userIcon"].ToString(), jd["token"].ToString());
//打印用户信息
print("userID:" + CurrentQQuserInfo.userID + "===" + "userName:" + CurrentQQuserInfo.userName + "===" + "userIcon:" + CurrentQQuserInfo.userIcon + "===" +
"token:" + CurrentQQuserInfo.token);
//在控制台输出
myConsole.text += "\n" + "userID:" + CurrentQQuserInfo.userID + "===" + "userName:" +
CurrentQQuserInfo.userName + "===" + "userIcon:" + CurrentQQuserInfo.userIcon + "===" +
"token:" + CurrentQQuserInfo.token;
}
else if (state == ResponseState.Fail)
{
print("fail! throwable stack = " + result["stack"] + "; error msg = " + result["msg"]);
}
else if (state == ResponseState.Cancel)
{
print("cancel !");
}
}
}
在Android平台的运行截图:
收到了QQ用户的信息之后,大家就可以做与服务器交互、本地存储等等操作,在这里提示一下大家,用户的信息很宝贵,请做好加密处理。
下面是工程下载地址:http://download.csdn.net/download/aries_h/10001762
本文永久链接:http://blog.csdn.net/Aries_H/article/details/78133687
网友评论