入行IOS开发第一个任务就是做微信登陆。调用微信的SDK接口,遇到一些小细节问题。这里就总结一下吧。
SDK的导入的方式具体可看微信官方文档
https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=1417694084&token=&lang=zh_CN
SDK接口具体说明
https://open.weixin.qq.com/cgi-bin/showdocument?action=doc&id=open1419317851&t=0.9033173893112689#scope
下面是代码
第一步:请求CODE
-(void)sendAuthRequest { //我这里使用UUID来做state内容 self.requestState = [NSUUID UUID].UUIDString; //构造SendAuthReq结构体 SendAuthReq* req =[[[SendAuthReq alloc ] init ] autorelease ]; req.scope = @"snsapi_userinfo" ; req.state = self.requestState ; //第三方向微信终端发送一个SendAuthReq消息结构 [WXApi sendReq:req]; }
参数说明
参数 | 是否必须 | 说明 |
---|---|---|
appid | 是 | 应用唯一标识,在微信开放平台提交应用审核通过后获得 |
scope | 是 | 应用授权作用域,如获取用户个人信息则填写snsapi_userinfo(什么是授权域?) |
state | 否 | 用于保持请求和回调的状态,授权请求后原样带回给第三方。该参数可用于防止csrf攻击(跨站请求伪造攻击),建议第三方带上该参数,可设置为简单的随机数加session进行校验 |
第二步:通过code获取access_token
获取第一步的code后,请求以下链接获取access_token:
https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
参数说明
参数 | 是否必须 | 说明 |
---|---|---|
appid | 是 | 应用唯一标识,在微信开放平台提交应用审核通过后获得 |
secret | 是 | 应用密钥AppSecret,在微信开放平台提交应用审核通过后获得 |
code | 是 | 填写第一步获取的code参数 |
grant_type | 是 | 填authorization_code |
第三步:通过access_token调用接口
获取access_token后,进行接口调用,有以下前提:
-
1. access_token有效且未超时;
-
2. 微信用户已授权给第三方应用帐号相应接口作用域(scope)