ShareSDK社会化分享
2018-11-08 本文已影响6人
_凉笙

,先去新浪微博开放平台先申请授权,http://open.weibo.com/进入新浪微博的开放平台官网点击应用接入,然后开始创建一款应用,可以看到下图我们需要包名签名



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







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<ShareSDK>();
UnityEngine.SceneManagement.SceneManager.LoadScene(1);
}
}
然后我们再创建个登陆的Login场景,首先把场景搭建好,然后添加个空物体LoginManager,上面挂载Login脚本.

using cn.sharesdk.unity3d;
using System.Collections;
using UnityEngine;
using UnityEngine.UI;
public class Login : MonoBehaviour {
ShareSDK ssd;
// Use this for initialization
void Start () {
ssd = ShareSDKManager.Instance.ssdk;
//指定授权结果回调函数
ssd.authHandler = OnAuthResultHandler;
GameObject.Find("SinaLoginButton").GetComponent<Button>().onClick.AddListener(SinaLoginButtonClick) ;
}
public void SinaLoginButtonClick()
{
//检测指定平台是否已经授权过
if (ssd.IsAuthorized(PlatformType.SinaWeibo))
{
//授权成功后通过GetAuthInfo获取授权信息
Hashtable table = ssd.GetAuthInfo(PlatformType.SinaWeibo);
Utility.WriteFile(Application.persistentDataPath, "AuthInfo.dat", table.toJson());
Utility.MakeToast("微博用户:" + table["userName"] + "登陆成功");
UnityEngine.SceneManagement.SceneManager.LoadScene(2);
}
else
{
//使用指定平台授权
ssd.Authorize(PlatformType.SinaWeibo);
}
}
//state授权状态,type为授权平台类型,data为返回
void OnAuthResultHandler(int reqID, ResponseState state, PlatformType type, Hashtable data)
{
//授权成功
if (state == ResponseState.Success)
{
Utility.WriteFile(Application.persistentDataPath, "AuthResult.dat", data.toJson());
//授权成功后通过GetAuthInfo获取授权信息
Hashtable table =ssd.GetAuthInfo(PlatformType.SinaWeibo);
Utility.WriteFile(Application.persistentDataPath, "AuthInfo.dat", table.toJson());
Utility.MakeToast("微博用户:" + ssd.GetAuthInfo(PlatformType.SinaWeibo)["userName"] + "登陆成功");
UnityEngine.SceneManagement.SceneManager.LoadScene(2);
Utility.MakeToast("登陆被取消!");
}
else if (state == ResponseState.Fail)
{
//授权失败清空指定平台授权信息
ssd.CancelAuthorize(type);
Utility.MakeToast("登陆失败!");
}
else if (state == ResponseState.Cancel)
{
ssd.CancelAuthorize(type);
Utility.MakeToast("登陆被取消!");
}
}
}
还有一个工具类
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<AndroidJavaObject>("currentActivity");
AndroidJavaClass Toast = new AndroidJavaClass("android.widget.Toast");
currentActivity.Call("runOnUiThread", new AndroidJavaRunnable(() =>
{
Toast.CallStatic<AndroidJavaObject>("maskText", currentActivity, info, Toast.GetStatic<int>("LENGTH_LONG")).Call("show");
}
));
}
}
接下来在创建游玩的场景Info,创建好后搭建场景




我们也可以在手机内部存储-Adroid-data-“你的包名”-files里面的AuthInfo.data里面取到我们获取到的授权信息,这是我们自己打印出来的信息结果,可以看到我们可以获取到微博的头像,id和名字。
