支付宝小程序获取用户的user_id案例
官方文档:https://docs.alipay.com/mini/introduce/auth
一、首先获取authcode
my.getAuthCode({
scopes: 'auth_base',
success: (res) => {
// res.authCode
//发送授权码到服务后台进行解析
// 根据authcode,调用后台接口,获取用户ID
}
});
二、根据authcode获取用户ID(user_id)
服务端SDK文档:https://docs.open.alipay.com/54/103419/
如果要获取用户昵称、头像,还需要先进行用户授权
解析授权码
/// <summary>
/// 获取支付宝用户id
/// </summary>
/// <param name="auth_code">小程序授权码</param>
/// <param name="app_id">appid</param>
/// <param name="merchant_private_key">应用私钥,和应用公钥匹配 在密钥生产器中可见</param>
/// <param name="alipay_public_key">支付宝公钥(区别于应用公钥),开放平台中接口加签方式中可见</param>
/// <returns></returns>
public static string GetUserID(string auth_code, string app_id, string merchant_private_key, string alipay_public_key)
{
string result = "";
try
{
IAopClient client = new DefaultAopClient("https://openapi.alipay.com/gateway.do", app_id, merchant_private_key, "json", "1.0", "RSA2", alipay_public_key, "GBK", false);
AlipaySystemOauthTokenRequest request = new AlipaySystemOauthTokenRequest();
request.GrantType = "authorization_code";
request.Code = auth_code;
request.RefreshToken = "";
AlipaySystemOauthTokenResponse response = client.Execute(request);
JObject jobj = (JObject)JsonConvert.DeserializeObject(response.Body);
JObject jk = (JObject)jobj["alipay_system_oauth_token_response"];
if (jk.Property("code") == null)
{
string user_id = jobj["alipay_system_oauth_token_response"]["user_id"].ToString();
result = ReturnInfo.ListReturn("S", "", user_id);
}
else
{
string msg = jobj["alipay_system_oauth_token_response"]["msg"].ToString();
result = ReturnInfo.ListReturn("E", msg, "");
}
}
catch (Exception ex)
{
result = ReturnInfo.ListReturn("E", ex.Message, "");
}
return result;
}
获取用户信息
my.getAuthUserInfo({
success: (res) => {
console.log("用户信息:" + JSON.stringify(res))
var nickName = res.nickName;
var avatar = res.avatar;
});
},
fail: err => console.log(err)
});
本文来自博客园,作者:JackieDYH,转载请注明原文链接:https://www.cnblogs.com/JackieDYH/p/17634334.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现