Unity — ShareSDK 获取微信头像

ShareSDK获取微信头像

导入ShareSDK 的unity插件包,在这里插入图片描述
新建一个游戏对象并挂起 ShareSDK这个组件,填写好你申请的游戏参数,在这里插入图片描述
写好登陆授权的回调函数

  private void InitShareSDK()
    {
        Mir.Instance.cData.playerData.shareSDK = gameObject.GetComponent<ShareSDK>();

        Mir.Instance.cData.playerData.shareSDK.authHandler = OnAuthResultHandler;
        Mir.Instance.cData.playerData.shareSDK.shareHandler = OnShareResultHandler;
        Mir.Instance.cData.playerData.shareSDK.showUserHandler = OnGetUserInfoResultHandler;
        Mir.Instance.cData.playerData.shareSDK.getFriendsHandler = OnGetFriendsResultHandler;
        Mir.Instance.cData.playerData.shareSDK.followFriendHandler = OnFollowFriendResultHandler;
    }

    private void OnFollowFriendResultHandler(int reqID, ResponseState state, PlatformType type, Hashtable data)
    {
        
    }

    private void OnGetFriendsResultHandler(int reqID, ResponseState state, PlatformType type, Hashtable data)
    {
        
    }

    private void OnGetUserInfoResultHandler(int reqID, ResponseState state, PlatformType type, Hashtable data)
    {
          
    }

    private void OnShareResultHandler(int reqID, ResponseState state, PlatformType type, Hashtable data)
    {

        if (state == ResponseState.Success)
        {
            print("share success");
            print(MiniJSON.jsonEncode(data));
        
        }
        else if (state == ResponseState.Fail)
        {


        }
        else if (state == ResponseState.Cancel)
        {


        }
    }

    private void OnAuthResultHandler(int reqID, ResponseState state, PlatformType type, Hashtable result)
    {
       // string str = "";
        if (state == ResponseState.Success)
        {
            if (result != null && result.Count > 0)
            {
                Debug.Log("authorize success !" + "Platform :" + type + "result:" + MiniJSON.jsonEncode(result));
            }
            else
            {
                Debug.Log("authorize success !" + "Platform :" + type);
            }
            // str = "授权成功";
            Debug.Log("授权成功");

            

            SdkInfo data = new SdkInfo();
            data.userID = result["userID"].ToString();
            data.icon = result["icon"].ToString();
            data.token = result["token"].ToString();
            data.expiresTime = result["expiresTime"].ToString();
            data.openid = result["openid"].ToString();
            data.nickname = result["nickname"].ToString();
            data.province = result["province"].ToString();
            data.country = result["country"].ToString();
            data.refresh_token = result["refresh_token"].ToString();
            data.expiresIn = result["expiresIn"].ToString();
            data.city = result["city"].ToString();
            data.unionid = result["unionid"].ToString();
            data.gender = result["gender"].ToString();
            Debug.Log(data.icon + "==" + data.userID);
            Mir.Instance.cData.playerData.sdkData = data;

            _guestKey = PlayerPrefs.GetString("bycw_moba_guest_key");
            if (_guestKey == null || _guestKey.Length != 32)
            {
                _guestKey = utils.rand_str(32);
            }
            Mir.Instance.cmd.login.Login2GuestReq(_guestKey);

        }
        else if (state == ResponseState.Fail)
        {
#if UNITY_ANDROID
            print("fail! throwable stack = " + result["stack"] + "; error msg = " + result["msg"]);
            //this.str = "授权失败" + "fail! throwable stack = " + result["stack"] + "; error msg = " + result["msg"];
#elif UNITY_IPHONE
			print ("fail! error code = " + result["error_code"] + "; error msg = " + result["error_msg"]);
#endif
        }
        else if (state == ResponseState.Cancel)
        {
            print("cancel !");
           // this.str = "取消授权";
        }
    }

我这里的做法是微信授权成功后,自己新建一个对象把sdk 的信息存在我本地,ShareSDK里面也有相关的数据接口,看你自己的实现方式,

//sdk 回调数据
public class SdkInfo
{
    public string userID;
    public string icon;
    public string token;
    public string expiresTime;
    public string openid;
    public string nickname;
    public string province;         //省份
    public string country;          //国家
    public string refresh_token;
    public string expiresIn;
    public string city;
    public string unionid;
    public string gender;           //性别  0 == 男

}

获取头像,直接封装一个方法出来,

   /// <summary>
    /// 获取头像
    /// </summary>
    /// <param name="url"></param>
    /// <returns></returns>
    public IEnumerator LoadImage_userIcon(Image userIcon)
    {
    	//Image 用来现在微信头像
        if (sdkData != null)
        {

            Debug.Log("微信头像");
            UnityWebRequest request = UnityWebRequestTexture.GetTexture(sdkData.icon);
            yield return request.SendWebRequest();

            Texture2D texture2D = DownloadHandlerTexture.GetContent(request);
            userIcon.sprite = Sprite.Create(texture2D, new Rect(0, 0, texture2D.width, texture2D.height), Vector2.zero);

        }

    }

    public SdkInfo sdkData { get; set; }
发布了37 篇原创文章 · 获赞 11 · 访问量 6166

猜你喜欢

转载自blog.csdn.net/weixin_42422809/article/details/98089725