支付宝小程序--如何获取用户信息
需要在开放平台-开发者中心-我的应用--小程序详情-开发管理-功能列表中,添加功能【获取会员信息】。(不需要签约)状态为“已生效”,就可以拥有调用获取会员信息的权限。 接着编写获取会员信息的代码:
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中,并在小程序中展示 具体请看【】