原文地址:
https://www.cnblogs.com/e241138/archive/2013/03/15/sina-weibo-oauth-access_token.html
新浪微博开放平台
提供了丰富的API接口,利用这些接口,开发者能够开发出独具特色的微博应用。但是,大部分接口都需要用户授权给应用,应用利用授权得到的Access Token来调用相应的接口来获取内容。
新浪微博的授权机制目前主要有3种应用场景:
-
Web应用
-
移动应用
-
站内应用
本文主要介绍Web应用如何授权、获取Access Token。
步骤一:添加网站
进入
新浪微博开放平台
,进入“管理中心“,点击”创建应用”,选择“网页应用”,填写相应的信息后提交。
步骤二:Oauth2.0授权设置
应用创建完后可以在“管理中心”-“我的应用”中查看信息,在“应用信息”--“高级信息”中可以设置网站的授权回调页和取消授权回调页。
授权回调页非常重要,一定要填写正确,当用户授权成功后会回调到此页面,传回一个“code”参数,开发者可以用code换取Access Token值。
步骤三:引导用户授权
引导需要授权的用户到如下页面:
https://api.weibo.com/oauth2/authorize?client_id=
YOUR_CLIENT_ID
&response_type=code&redirect_uri=
YOUR_REGISTERED_REDIRECT_URI
YOUR_CLIENT_ID:即应用的AppKey,可以在应用基本信息里查看到。
YOUR_REGISTERED_REDIRECT_URI:即之前填写的授权回调页,注意一定要完全相同。
如果用户授权成功后,会跳转到回调页,开发者此时需要得到url参数中的code值,注意code只能使用一次。
步骤四:换取Access Token
开发者可以访问如下页面得到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
这些参数就不一一介绍了。
如果都没有问题,就可以得到Access Token了,返回示例:
"access_token": "ACCESS_TOKEN",
"expires_in": 1234,
"remind_in":"798114",
"uid":"12341234"
步骤五:调用API
获取到Access Token后,开发者可以保存它的值,调用API的时候直接用就可以了。Access Token有一定的有效期,过期后需要重新授权。
今天需要使用
新浪微博
提供的API
获取
微博的详细信息以及用户的详细信息,所以需要使用API中的/statuses/show接口。
使用
新浪微博
API的前提是需要到
新浪微博
开放平台注册一个应用,获得App Key和App Secret,然后再根据这两个
获取
Access
Token
。下面详细介绍如何
获取
Access
Token
以及如何使用
新浪微博
提供的API。
一、
获取
Access
Token
access
token
是应用方访问资源服务器的接口时,需要提供的一个令牌。拥有这个令牌代表着得到用户的
授权
。然而,这个
授权
应该是临时的,有一定有效期。这是因为,
access
token
在使用的过程中可能会泄露。给
access
token
限定一个较短的有效期可以降低因
access
token
泄露而带来的风险。
然而引入了有效期之后,应用方使用起来就不那么方便了。每当 ...
笔者在测试过程中发现,旧的appKey可以直接用response_type=
token
的方式
授权
,但是
授权
后会出现可以访问
新浪微博
的用户接口和关系接口,但是没办法访问微博接口,拿不到微博的数据.新申请的应用,则只能用response_type=code这种方式
授权
,采用code
授权
后可以访问普通接口.
笔者测试时网络部分用的AFN框架,开发环境Xcode5,ARC.在用code方式时,第一步
获取
...
2.微博账号成为开发者。
登录微博开放平台 登录你注册的账号,然后进入管理中心完善开发者基本信息和身份认证。
这个时候,还需要浏览一下微博开放平台的文档,来了解一些这个开放平台的一些规范性的名词。
每个链接都点进去看看,顺便看看微博API文档,你会发现,里边有介绍说,一些...
在 com.weibo.net.
Token
.java文件中
public void setExpiresIn(String expiresIn) {
if (expiresIn != null && !expiresIn.equals("0")) {
setExpiresIn(System.currentTimeMillis() + Integer.parseInt(exp...
CSDNDEBUG_:
bash: rsync: command not found报错原因以及解决办法
黎猫大侠:
JavaScript中scope介绍
就很烦497:
weixin_40620846:
电脑无法连接网络并诊断提示DNS服务器未响应的解决方法
2301_79165604: