lcjok9 2023-01-01 17:19
浏览 98
已结题

unity开发微信小游戏,用户授权按纽使用C#脚本如何创建?

微信小游戏授权问题,Unity开发微信小游戏,用户授权按纽用C#代码如何创建?
以下示例代码,无法在微信开发者工具或真机中弹出授权窗口:


using UnityEngine;
using WeChatWASM;

public class AuthorizeBackup : MonoBehaviour
{
    // 注意:WX.Authorize方法实现用户授权,好像已经禁用
    
    public void GetUserInfo()
    {
        // 查看是否授权
        WX.GetSetting(new GetSettingOption()
        {
            withSubscriptions = false,

            success = res =>
            {
                // 若已经授权,可以直接调用 getUserInfo 获取头像昵称
                if (res.authSetting["scope.userInfo"])
                {
                    print("当前用户已经授权");
                    print("res.errMsg = " + res.errMsg); // getSetting:ok

                    WX.GetUserInfo(new GetUserInfoOption()
                    {
                        success = result =>
                        {
                            print("昵称:" + result.userInfo.nickName); // 用户昵称:有
                        },

                        lang = "zh_CN",
                        withCredentials = false
                    });
                }

                // 否则,先通过 wx.createUserInfoButton 接口发起授权
                else
                {
                    var btn = WXBase.CreateUserInfoButton(50, 50, 300, 50, "zh_CN", false);
                    btn.Show();
                    
                    // 用户同意授权后回调,通过回调可获取用户头像昵称信息
                    btn.OnTap(response =>
                    {
                        Debug.Log("用户点击了按纽");
                        Debug.Log("用户信息:" + response.userInfo);
                        Debug.Log("回调ID:" + response.callbackId);
                        Debug.Log("点击后的消息:" + response.errMsg);
                    });
                }
            },
        });
    }
}
  • 写回答

1条回答 默认 最新

  • lcjok9 2023-01-03 13:14
    关注
    
    // 创建用户信息获取按钮,在底部1/3区域创建一个透明区域
                // 首次获取会弹出用户授权窗口, 可通过右上角-设置-权限管理用户的授权记录
                var canvasWith = (int)(systemInfo.screenWidth * systemInfo.pixelRatio);
                var canvasHeight = (int)(systemInfo.screenHeight * systemInfo.pixelRatio);
                var buttonHeight = (int)(canvasWith / 1080f * 300f);
                var infoButton = WX.CreateUserInfoButton(0, canvasHeight - buttonHeight, canvasWith, buttonHeight, "zh_CN", false);
                infoButton.OnTap((userInfoButonRet) =>
                {
                    Debug.Log(JsonUtility.ToJson(userInfoButonRet.userInfo));
                    txtUserInfo.text = $"nickName:{userInfoButonRet.userInfo.nickName}, avartar:{userInfoButonRet.userInfo.avatarUrl}";
                });
                Debug.Log("infoButton Created");
    

    参考以上官方示例,相对应的修改一下,即可。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 1月3日
  • 已采纳回答 1月3日
  • 创建了问题 1月1日

悬赏问题

  • ¥20 删除和修改功能无法调用
  • ¥15 kafka topic 所有分副本数修改
  • ¥15 小程序中fit格式等运动数据文件怎样实现可视化?(包含心率信息))
  • ¥15 如何利用mmdetection3d中的get_flops.py文件计算fcos3d方法的flops?
  • ¥40 串口调试助手打开串口后,keil5的代码就停止了
  • ¥15 电脑最近经常蓝屏,求大家看看哪的问题
  • ¥60 高价有偿求java辅导。工程量较大,价格你定,联系确定辅导后将采纳你的答案。希望能给出完整详细代码,并能解释回答我关于代码的疑问疑问,代码要求如下,联系我会发文档
  • ¥50 C++五子棋AI程序编写
  • ¥30 求安卓设备利用一个typeC接口,同时实现向pc一边投屏一边上传数据的解决方案。
  • ¥15 SQL Server analysis services 服务安装失败