首页 » 微信公众平台开发:从零基础到ThinkPHP5高性能框架实践 » 微信公众平台开发:从零基础到ThinkPHP5高性能框架实践全文在线阅读

《微信公众平台开发:从零基础到ThinkPHP5高性能框架实践》22.1.1 微信登录

关灯直达底部

移动应用微信登录是基于OAuth2.0协议标准构建的微信OAuth2.0授权登录系统。

进行微信OAuth2.0授权登录接入之前,先在微信开放平台注册开发者账号,并拥有一个已审核通过的移动应用,获得相应的AppID和AppSecret,申请微信登录且通过审核后,可开始接入流程。

目前移动应用上微信登录只提供原生的登录方式,需要用户安装微信客户端才能配合使用。

微信登录的流程如下。

开发者需要配合使用微信开放平台提供的SDK进行授权登录请求接入。正确接入SDK并拥有相关授权域权限后,开发者移动应用会在终端本地拉起微信应用进行授权登录,微信用户确认后,微信将拉起开发者移动应用,并带上授权临时票据(Code)。

iOS平台应用授权登录接入代码示例如下。


-(void)sendAuthRequest{     // 构造SendAuthReq结构体     SendAuthReq* req =[[[SendAuthReq alloc ] init ] autorelease ];    req.scope = @"snsapi_userinfo" ;    req.state = @"123" ;    // 第三方向微信终端发送一个SendAuthReq消息结构    [WXApi sendReq:req]; }  

Android平台应用授权登录接入代码示例如下。


{     // send OAuth request     Final SendAuth.Req req = new SendAuth.Req;    req.scope = "snsapi_userinfo";    req.state = "wechat_sdk_demo_test";    api.sendReq(req);}  

上述数据的参数说明如表22-1所示。

表22-1 移动应用微信登录参数说明

微信客户端会被拉起,跳转至微信登录授权界面,如图22-2所示。

图22-2 移动应用微信登录

当用户点击“确认登录”按钮时,SDK通过SendAuth的Resp返回ErrCode和code等参数给调用方。相关参数的说明如表22-2所示。

表22-2 微信登录返回参数

获取第一步的code后,请求接口获取access_token,接口地址如下。


https:// api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code  

上述数据的参数说明如表22-3所示。

表22-3 获取access_token接口的参数说明

正确创建时,返回的数据示例如下。


{    "access_token": "OezXcEiiBSKSxW0eoylIeOZ0dfxvb93UyrFdwznvwUv3JkVNVV1yFvQQa3IfuyMi4i    ZGDsAfe81sCaUXxyKrI-5XgCvhAS02eAC4MF2fJFl80Y9s-0h1EsuBmIVKgu0GnKhxCQ0M8G-gkQAJpzLzmQ",    "expires_in": 7200,    "refresh_token": "OezXcEiiBSKSxW0eoylIeOZ0dfxvb93UyrFdwznvwUv3JkVNVV1yFvQQa3IfuyMiH    7dCabGFyMRtZHnHPHuEK78cf1eISYJ4y453T8pDa2tFAIJu8bFeLMBpeFSv9dgnGrK-ZfRxHzhq7IW4qevEMQ",    "openid": "oH9d2v7NmDhsFzICG63UPSIOgUcY",    "scope": "snsapi_userinfo",    "unionid": "o4wcnwx0BVC4F_hSl5qCd5rC4Jps"}  

上述数据的参数说明如表22-4所示。

表22-4 获取access_token接口返回参数说明

最后可以通过Access Token和OpenID获取用户的基本信息。接口地址如下。


https:// api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID  

上述数据的参数说明如表22-5所示。

表22-5 获取用户基本信息接口的参数说明

正确创建时,返回的数据示例如下。


{    "openid": "oH9d2v7NmDhsFzICG63UPSIOgUcY",    "nickname": "方倍",    "sex": 0,    "language": "zh_CN",    "city": "",    "province": "",    "country": "CN",    "headimgurl": "http:// wx.qlogo.cn/mmopen/pburdzLK7PUTcFw3ozK52Gravkznno51DSjnq    nzsG6WzJLUOtadGBYYSVqh5YDicdawxrD6hHoR96OcyyDWAEgA/0",    "privilege": ,    "unionid": "o4wcnwx0BVC4F_hSl5qCd5rC4Jps"}  

上述数据的参数说明如表22-6所示。

表22-6 获取用户基本信息接口返回参数说明

至此,移动应用就完成了微信用户的登录过程,并获得了用户的个人基本信息。