来啦老弟
开发之前的准备如下:
- 注册新浪微博
- 访问新浪微博开发平台http://open.weibo.com,如果是企业,申请企业接入,并提交相关资料进行审核;如果是个人开发者,就请申请个人开发者应用。
- 进入http://open.weibo.com完善个人信息之后,必须还要做完身份认证审核,审核完成之后,新浪开放平台就会给出appkey和App Secret。
在开放平台上创建应用,(分移动应用、网站应用、游戏和其他产品)如下图所示:
客户端类型应用申请如下:
web类型应用申请如下:
申请web应用填写信息
- 填完信息,等待平台审核通过后,拿到appkey和App Secret 还有之前准备的redirect_URI回调地址(即平台的登录页面)之后,即可接入微博登录。
web端(h5)微博登录
引导需要授权的用户到如下地址:(请求用户授权Token)
文档请参照:https://open.weibo.com/wiki/Oauth2/authorize
请求方式:GET/POST
YOUR_CLIENT_ID ---->申请应用时分配的AppKey。
YOUR_REGISTERED_REDIRECT_URI---->授权回调地址,站外应用需与设置的回调地址一致,站内应用需填写canvas page的地址。(一般为应用登录页面)
如果用户同意授权,页面跳转至 YOUR_REGISTERED_REDIRECT_URI/?code=CODE:
返回数据
返回值字段 | 字段类型 | 字段说明 |
---|---|---|
code | string | 用于第二步调用oauth2/access_token接口,获取授权后的access token。 |
state | string | 如果传递参数,会回传该参数。(防止CSRF攻击用的) |
- 拿到上一步的code后,用code换取Access Token:
url
文档请参照:https://open.weibo.com/wiki/Oauth2/access_token
请求方式:POST
YOUR_CLIENT_ID ---->申请应用时分配的AppKey。
YOUR_CLIENT_SECRET---->申请应用时分配的AppSecret。
YOUR_REGISTERED_REDIRECT_URI---->授权回调地址,站外应用需与设置的回调地址一致,站内应用需填写canvas page的地址。(一般为应用登录页面)
返回数据
返回值字段 | 字段类型 | 字段说明 |
---|---|---|
access_token | string | 用户授权的唯一票据,用于调用微博的开放接口,同时也是第三方应用验证微博用户登录的唯一票据,第三方应用应该用该票据和自己应用内的用户建立唯一影射关系,来识别登录状态,不能使用本返回值里的UID字段来做登录识别。 |
expires_in | string | access_token的生命周期,单位是秒数。 |
uid | string | 授权用户的UID,本字段只是为了方便开发者,减少一次user/show接口调用而返回的,第三方应用不能用此字段作为用户登录状态的识别,只有access_token才是用户授权的唯一票据。 |
- 根据用户ID获取用户信息
https://api.weibo.com/2/users/show.json?access_token=token&uid=openId
参考文档:https://open.weibo.com/wiki/2/users/show
请求方式:GET
access_token---->上一步获取的access_token
uid---->上一步获取的UID
- 拿到用户信息后就可以将你需要的用户信息注册到你的项目的用户表里,重点保存第5步得到的UID,下次用户再用此账号登录时,到第6步后拿着第5步得到的UID查询数据库里是否存在,存在就不用再次注册到数据库,直接生成token,返回用户数据,登录成功。
到此,微博登录就结束了。具体文档请参照:
嘿嘿嘿,划重点了
看到网上有很多关于为什么access_token要设置过期时间的问题,此处以自己的理解解答一哈:
首先我们如果只是做登录,确实不需要access_token,因为已经有openid或者uid跟你的用户对应起来了,但是,这是授权行为,意味着第三方应用可以拿着access_token去取你的数据, 所以这里就需要时效性来保证安全了。(如果有更好的理解欢迎在评论区评论)
网友评论