前言
比如说你要使用一个从来未注册过的软件,一般来讲你需要先注册成为这个软件的用户,然后登录后才可以使用该软件。但是为了方便起见,现在的大部分软件会允许你第三方登录。比如说、你可以通过微信、微博、QQ等其它社交软件辅助登录,这样就可以在不进行“注册”的情况下进行登录该软件。
1、OAuth2.0
OAuth: OAuth(开放授权)是一个开放标准,允许用户授权第三方网站访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方网站或分享他们数据的所有内容。
OAuth2.0:对于用户相关的 OpenAPI(例如获取用户信息,动态同步,照片,日志,分享等),为了保护用户数据的安全和隐私,第三方网站访问用户数据前都需要显式的向用户征求授权。
官方流程
关于 OAuth2.0 协议的授权流程可以参考下面的流程图,其中 Client 指第三方应用,Resource Owner 指用户,Authorization Server 是微博开放平台的授权服务器,Resource Server 是微博开放平台的 API 服务器。
1、用户打开客户端以后,客户端要求用户给予授权。
2、用户同意给予客户端授权。
3、客户端使用上一步获得的授权,向认证服务器申请令牌。
4、认证服务器对客户端进行认证以后,确认无误,同意发放令牌。
5、客户端使用令牌,向资源服务器申请获取资源。
6、资源服务器确认令牌无误,同意向客户端开放资源。
2、微博登录工作准备
2.1 登录平台
地址直达:新浪微博开放平台
提示:如果第一次登录微博开放平台,你需要填写基本的个人信息,以及身份认证(不进行身份认证是不能创建应用的,认证也快)
2.2 创建应用
1、在微连接中,选择网站接入
2、选择立即创建微连接
3、点击立即接入
4、填写应用名称,创建
2.3 查看创建的应用
2.4 添加回调地址
当你进行了授权,比如说,你扫码登录了微博、并且成功授权。然后跳转页面跳转到你指定的这个位置。(我这里遇到一个坑,在分布式下,不同的微服务的接口调用,需要经过网关的处理。调用接口的时候、一定要确保在对应微服务的域名之下,否则会找不到调用的信息,报404错误)
3、查看官方使用手册
官方文档
在文档中的 OAuth2.0授权认证 ,有具体的使用情况。这里不在进行赘述
3.1 基本流程
1、引导需要授权的用户到如下地址:
https://api.weibo.com/oauth2/authorize?client_id=YOUR_CLIENT_ID&response_type=code&redirect_uri=YOUR_REGISTERED_REDIRECT_URI
2、如果用户同意授权,页面跳转YOUR_REGISTERED_REDIRECT_URI/?code=CODE
3、 换取Access Token
https://api.weibo.com/oauth2/access_token?client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET&grant_type=authorization_code&redirect_uri=YOUR_REGISTERED_REDIRECT_URI&code=CODE
其client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET
可以使用basic方式加入header中。
4、使用获得的Access Token调用API
4、使用Postman测试
1、引导用户到授权页面,这个是图片也可以填写账号
https://api.weibo.com/oauth2/authorize?client_id=你的&response_type=code&redirect_uri=你的###
2、获取返回的code
3、换取Access Token
https://api.weibo.com/oauth2/access_token?client_id=你的&client_secret=你的&grant_type=authorization_code&redirect_uri=你的&code=返回的code
4、调用接口拿取数据
5 提示
5.1、提示一
引导需要授权的用户到如下地址,大致流程就是,你通过这个点击某个按钮或者图片也好,进入这个地址,然后进行授权。授权成功就跳转到redirect_uri
指定的位置,一定要确保这里填写的位置和在应用中填写的回调地址保持一致,否则报错
https://api.weibo.com/oauth2/authorize?client_id=YOUR_CLIENT_ID&response_type=code&redirect_uri=YOUR_REGISTERED_REDIRECT_URI
YOUR_CLIENT_ID
对应应用里边的App Key
下一篇写项目中的实际应用