获取微信权限
`
前言
用unity3d开发微信小游戏,遇到了一些问题,记录一下, 同时创建了一个交流群QQ 641029627,有需要的可以加入一起讨论,广告哥远离
提示:以下是本篇文章正文内容,下面案例可供参考
一、设置
首先SDK里面的微信小游戏-使用好友关系链要勾选
二、介绍下SDK
1.WX.InitSDK
初始化SDK,首次调用
WX.InitSDK((code) =>
{
});
2.WX.GetSetting();
获取设置,也就是能获取到授权结果(用户信息,地理位置,信运动步数等) https://developers.weixin.qq.com/minigame/dev/api/open-api/setting/AuthSetting.html
GetSettingOption setTingOp = new GetSettingOption();
setTingOp.success = (e) =>
{
};
WX.GetSetting(setTingOp);
3. WX.Authorize();
提前向用户发起授权请求。调用后会立刻弹窗询问用户是否同意授权小程序使用某项功能或获取用户的某些数据,但不会实际调用对应接口。如果用户之前已经同意授权,则不会出现弹窗,直接返回成功。更多用法详见 [用户授权] https://developers.weixin.qq.com/minigame/dev/api/open-api/authorize/wx.authorize.html
AuthorizeOption authorizeOption = new AuthorizeOption();
authorizeOption.scope = "scope.userInfo";
authorizeOption.success = (e) =>
{
Debug.Log("success");
};
authorizeOption.fail = (e) =>
{
Debug.Log("fail");
};
authorizeOption.complete = (e) =>
{
Debug.Log("complete");
};
WX.Authorize(authorizeOption);
4. WX.Authorize();
调用接口获取登录凭证(code)。通过凭证进而换取用户登录态信息,包括用户在当前小程序的唯一标识(openid)、微信开放平台帐号下的唯一标识(unionid,若当前小程序已绑定到微信开放平台帐号)及本次登录的会话密钥(session_key)等。用户数据的加解密通讯需要依赖会话密钥完成。更多使用方法详见 [小程序登录] https://developers.weixin.qq.com/minigame/dev/api/open-api/login/wx.login.html
LoginOption login = new LoginOption();
login.success = (e) =>
{
};
WX.Login(login);
5. WX.GetUserInfo();
获取用户信息( 必须是在用户已经授权的情况下调用) appid和secret 在小游戏设置那里可以找到
https://developers.weixin.qq.com/minigame/dev/api/open-api/login/wx.login.html
GetUserInfoOption callBack = new GetUserInfoOption();
callBack.withCredentials = true;
callBack.lang = "zh_CN";
callBack.success = (d) =>
{
string url = string.Format("https://api.weixin.qq.com/sns/jscode2session?appid={0}&secret={1}&js_code={2}&grant_type=authorization_code", "自己的appid", "自己的secret", e.code);
StartCoroutine(GetRequest(url));
RoleManager.roleData.roleName = d.userInfo.nickName;
RoleManager.roleData.headUrl = d.userInfo.avatarUrl;
Debug.Log(d.userInfo.avatarUrl);
};
callBack.complete = (e) =>
{
Debug.Log("完成");
};
callBack.fail = (e) =>
{
Debug.Log("失败");
Debug.Log(e.errMsg);
};
WX.GetUserInfo(callBack);
private IEnumerator GetRequest(string url)
{
using (UnityWebRequest webRequest = UnityWebRequest.Get(url))
{
yield return webRequest.SendWebRequest();
if (!string.IsNullOrEmpty(webRequest.error))
{
Debug.Log("error:" + webRequest.error);
}
else
{
UserData data = JsonUtility.FromJson<UserData>(webRequest.downloadHandler.text);
if (data != null)
{
}
Debug.Log(webRequest.downloadHandler.text);
}
}
}
总结
今天先总结到这里了 ,如果感觉有帮助可以帮忙扫了上面的二维码_
|