lcjok9 2023-01-01 09:19
浏览 105
已结题

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 05: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日