需要在开放平台-开发者中心-我的应用-小程序-小程序详情-开发管理-功能列表中,添加功能【获取会员信息】。(不需要签约)状态为“已生效”,就可以拥有调用获取会员信息的权限。 接着编写获取会员信息的代码:
1.如果只是在客户端上做展示用,则使用my.getAuthCode、my.getAuthUserInfo函数即可拿到用户昵称与用户头像。 小程序示例:
my.getAuthCode({
scopes: 'auth_user',
success: (res) => { //获取用户信息
my.getAuthUserInfo({
success: (res) => {
my.alert(res.nickName); //获取的用户昵称
my.alert(res.avatar); //获取的用户头像图片
}
});
},
});
2.如果需要把信息存储到数据库中,则需要: 第一步:调用JSAPI:my.getAuthCode,获取authcode; 代码示例:
//获取用户信息
my.getAuthCode({
scopes: 'auth_user', //授权类型,默认auth_base(静默授权),支持auth_base/auth_user(主动授权)
success: (res) => {
my.alert(res.authCode); //获取的autoCode授权码
},
});
第二步:调用JSAPI:my.httpRequest,连接您自己的服务器;
代码示例:
my.getAuthCode({
scopes: 'auth_user', // 主动授权:auth_user,静默授权:auth_base
success: (res) => {
if (res.authCode) { // 认证成功
// 调用自己的服务端接口,让服务端进行后端的授权认证,并且种session,需要解决跨域问题
my.httpRequest({
url: 'http://isv.com/auth', // 该url是自己的服务地址,实现的功能是服务端拿到authcode去开放平台进行token验证
data: {
authcode: res.authcode
},
success: () => { // 授权成功并且服务器端登录成功 },
fail: () => { // 根据自己的业务场景来进行错误处理 },
});[/size]
[size=3] [/size][size=2] }
},
});
注意:使用my.httpRequest连接服务器需要解决跨域问题,需要在开放平台-开发者中心-我的应用-小程序-小程序详情-开发管理-设置中添加httpRequest域名白名单 第三步:在您的服务端,调用开放平台接口alipay.system.oauth.token,用authcode换取token; 以JAVA代码为例:
AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", APP_ID, APP_PRIVATE_KEY, "json", CHARSET, ALIPAY_PUBLIC_KEY, "RSA2");
AlipaySystemOauthTokenRequest request = new AlipaySystemOauthTokenRequest();
request.setCode("2e4248c2f50b4653bf18ecee3466UC18");
request.setGrantType("authorization_code");
try {
AlipaySystemOauthTokenResponse oauthTokenResponse = alipayClient.execute(request);
System.out.println(oauthTokenResponse.getAccessToken());
} catch (AlipayApiException e) {
//处理异常
e.printStackTrace();
}
第四步:在您的服务端拿到token后,继续调用开放平台接口alipay.user.info.share,用token换取用户信息。 以JAVA代码为例:
AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do","app_id","your private _key","json","GBK","alipay_public_key","RSA2");
AlipayUserInfoShareRequest request = new AlipayUserInfoShareRequest();
AlipayUserInfoShareResponse response = alipayClient.execute(request,accessToken);
if(response.isSuccess()){
System.out.println("调用成功");
} else {
System.out.println("调用失败");
}
第五步:把处理成功的状态反馈回JSAPI中,并在小程序中展示 具体请看【小程序文档用户授权】