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

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日

悬赏问题

  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘