`

6.腾讯微博Android客户端开发——换取Access Token

 
阅读更多

原文:http://blog.csdn.net/coolszy/article/details/6576536

 

本次讲解腾讯微博OAuth认证的最后一步使用授权后的Request Token换取Access Token,当我们获取到Access Token后,我们就可以进行微博平台的资源访问。

照例我们先看下交换access_token的API:

 

交换access_token

URLhttps://open.t.qq.com/cgi-bin/access_token

格式:xml,json

HTTPS请求方式:GET

是否需要鉴权:true

请求数限制:true 

请求参数:

oauth_callback:回调URL

oauth_consumer_key:你申请的appkey

oauth_nonce:随机串(32个字符长度)

oauth_signatureoauth请求签 

oauth_signature_method  名方法(HMAC-SHA1

oauth_timestamp:时间戳

oauth_token: request_token

oauth_version oauth版本号填(1.0

oauth_verifier:验证码

 

使用示例如下:

https://open.t.qq.com/cgi-bin/access_token?oauth_consumer_key=0aae7ba5c10d4b939694b0b3b9ffe8ac&oauth_nonce=35885b07fe7dc53942d405e552d086fe&oauth_signature=TXBihj%2FH4avLJaWmjYARDVVCu8M%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1288933101&oauth_token=66ae88faecd14a1f8e826d35d5e857a7&oauth_verifier=335566&oauth_version=1.0

 

返回结果:

oauth_token=ffc37464473e48a2b22226350dc98210&oauth_token_secret=3fe92ec42e936672ceca549d432c237d&name=starjiang

 

返回结果说明:

oauth_token: access_token

oauth_token_secret: access_secret

name微博帐户名

说明:

本步骤用于签名的密钥为App Secret和Request Token Secret(中间使用&分隔)

②获得返回值后就可以使用Access Token来访问资源了。

③Access Token和Access Token Secret永远不会过期,直到用户撤销应用授权或腾讯回收您的app访问权限才会失效。

通过API的我们可知请求URL为https://open.t.qq.com/cgi-bin/access_token,传递的参数个数为9个,但是官方给出的使用示例中传递的参数为8个,其中oauth_callback并未传递,个人认为是API提供错误,因为在前面的请求中我们已经指定了oauth_callback,我编写代码的时候也是没有传递oauth_callback。另外oauth_verifier即为我们在上一节中获取的验证码。同时还有一点要注意的是我们在生成签名的时候密钥是有两部分组成的:App Secret和Request Token Secret,其中Request Token Secret既是我们在获取未授权的Token中的返回值oauth_token_secret的值。

由于我们在请求时需要传递验证码,因此我在界面中添加了一个EditText用来接收用户输入的验证码:

 

同时添加了一个Button用于执行请求,代码如下:

url="https://open.t.qq.com/cgi-bin/access_token";

 

httpMethod = "GET";
Map<String, String> map = new HashMap<String, String>();
try
{
	params = OAuth.getPostParams(url, httpMethod,null, tokenSecret, oauthToken, verifier);
	SyncHttp http = new SyncHttp();
	String response = http.httpGet(url, params);
	map = TextUtil.splitResponse(response);
} catch (Exception e)
{
	e.printStackTrace();
}
return map;

 在这里要注意的是OAuth中的getPostParams()方法我做了相应的修改,这个会在视频中给大家讲解,这里仅附上代码:

public static String getPostParams(String url, String httpMethod, String callBack, String tokenSecret,String oauthToken,String verifier) throws Exception
{
	// 保存参数集合
	List<Parameter> params = new ArrayList<Parameter>();
	// 获取时间戳
	String timestamp = generateTimeStamp();
	// 获取单次值
	String nonce = generateNonce();
	// 添加参数
	params.add(new Parameter("oauth_consumer_key", CONSUMER_KEY));
	params.add(new Parameter("oauth_signature_method", SIGNATURE_METHOD));
	params.add(new Parameter("oauth_timestamp", timestamp));
	params.add(new Parameter("oauth_nonce", nonce));
	params.add(new Parameter("oauth_version", "1.0"));
	if (!TextUtil.isEmpty(callBack))
	{
		params.add(new Parameter("oauth_callback", callBack));
	}
	//验证码
	if (!TextUtil.isEmpty(verifier))
	{
		params.add(new Parameter("oauth_verifier", verifier));
	}
	//oauthToken
	if (!TextUtil.isEmpty(oauthToken))
	{
		params.add(new Parameter("oauth_token", oauthToken));
	}

	// 获取签名值
	String signature = generateSignature(httpMethod, url, params, CONSUMER_SECRET, tokenSecret);
	params.add(new Parameter("oauth_signature", signature));

	// 构造请求参数字符串
	StringBuilder urlBuilder = new StringBuilder();
	for (Parameter param : params)
	{
		urlBuilder.append(param.getName());
		urlBuilder.append("=");
		urlBuilder.append(param.getValue());
		urlBuilder.append("&");
	}
	// 删除最后“&”字符
	urlBuilder.deleteCharAt(urlBuilder.length() - 1);
	Log.i(TAG, "params="+urlBuilder.toString());
	return urlBuilder.toString();
}
 通过上面的代码我们就可以获取到Access Token,整个程序执行流程如下图表示:

 

通过上面的流程,我们发现在授权的过程中还需要用户的操作,既手动输入验证码,这样使我们的程序显得非常不友好。我也在参考其它的资料寻找解决方法,现在还找研究中,不管是否成功,在下一节课中会分享下思路,同时也期待各位朋友介绍更好的解决方案。

另外如果认证成功,我们可登陆open.t.qq.com,输入认证QQ账号,然后进入“应用”——“已授权应用”就可以看到我们授权的程序:

 

 

课程下载地址:http://u.115.com/file/e60jb8jl

文档下载地址:http://download.csdn.net/source/3405215

源码下载地址:http://u.115.com/file/dn4kdfdt

分享到:
评论

相关推荐

    4.腾讯微博Android客户端开发——获取未授权的Request Token

    腾讯微博Android客户端开发——获取未授权的Request Token,课程下载地址:http://blog.csdn.net/coolszy

    6.换取Access_Token.rar

    6.换取Access_Token.rar 6.换取Access_Token.rar 6.换取Access_Token.rar 腾讯微博Android客户端开发

    4.获取未授权的Request_Token.rar

    4.获取未授权的Request_Token.rar 4.获取未授权的Request_Token.rar .获取未授权的Request_Token.rar .腾讯微博Android客户端开发

    5.获取请求用户授权Request_Token.rar

    5.获取请求用户授权Request_Token.rar 5.获取请求用户授权Request_Token.rar 5.获取请求用户授权Request_Token.rar 腾讯微博Android客户端开发

    JBPM采购申请系统——06_JBPM版本控制及Token对象.7z

    JBPM采购申请系统——06_JBPM版本控制及Token对象.7z JBPM采购申请系统——06_JBPM版本控制及Token对象.7z JBPM采购申请系统——06_JBPM版本控制及Token对象.7z JBPM采购申请系统——06_JBPM版本控制及Token对象.7z ...

    Android新浪微博客户端源代码

    Android手机上的新浪微博客户端程序Java源码下载,可了解到android中的域名获取等操作,http操作,发微博的作者操作,sqlite操作和微博浏览显示操作,包括了界面到数据库和网络较综合的操作技巧。包括使用sqlite创建...

    腾讯微博API SDK vb 源码

    本SDK采用腾讯目前oauth1.0的授权机制,换取2.0token,API功能接口利用了oauth2,更为简洁。 实现的功能: 1.oauth1.0授权及2.0授权 2.实现了腾讯开放平台上列举出的所有功能,包括比较复杂的发表图片微博 3.可以...

    新浪oAuth授权并发布微博演示源码

    使用oauth授权,实现新浪微博与自己网站帐号绑定,并发布微博内容;根据这个功能, 主要将新浪微博返回来的oauth_token,oauth_token_secret存储到数据库中,然后可以 ...————————转发——————————

    flyfire#Android-Interview-1#Android客户端和服务端如何使用Token和Session1

    1、Token的引入:Token是在客户端频繁向服务端请求数据,服务端频繁的去数据库查询用户名和密码并进行对比,判断用户名和密码正确与否,并作出相应提示,在这样

    JSON Web Token (前端与后端对话密钥生成文件)

    —————————————————————————————————— 生成私钥 - ssh-keygen -t rsa -b 2048 -f private.key —————————————————————————————————— 生成公钥 ...

    ios版新浪微博客户端源代码

    ios版本新浪微博客户端源代码 client_ID = (你申请应用的appkey) client_SERCRET =(你申请应用的app_secret) redirect_URI =(回调地址,跟网上配置的一致,本人比较穷,而且用的是客户端,所以这里就为空) ...

    微信小程序登录换取token的教程

    前言: 这次主要是介绍些业务逻辑,技术点倒是没有多少。不过在开发中,优秀的编程思路同样是非常值得学习的。...小程序获取token.png 这里介绍的主要是后端开发的流程,前端的不是本文介绍的重点 二:如何将cod

    微信公众平台开发-如何保证access_token长期有效

    博客教程《微信公众平台开发教程第22篇-如何保证access_token长期有效》的配套代码,教程地址如下: http://blog.csdn.net/lyq8479/article/details/25076223

    新浪Oauth2 access_token

    使用'mechanize'写的对于新浪的Oauth2取得access_token.

    springSecurity-jwt:JWT access_token和refresh_token

    SpringSecurity-JWT-VERSION2(AccessToken和RefreshToken) version1太复杂,无法优化。accessToken refreshToken流安全登录处理流程详细说明转到博客文章JWT异常处理安全异常处理(AuthenticationEntryPoint,...

    Android token过期刷新处理的方法示例

    主要介绍了Android token过期刷新处理的方法示例,本文详细的介绍了2种方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    php获取微信access token

    php获取微信access tokenphp获取微信access tokenphp获取微信access tokenphp获取微信access tokenphp获取微信access tokenphp获取微信access token

    使用java代码获取新浪微博应用的access token代码实例

    主要介绍了使用java代码获取新浪微博应用的access token实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    微信的access——token

    这是微信公关平台的access-token如果用户在微信中(Web微信除外)访问公众号的第三方网页,公众号开发者可以通过此接口获取当前用户基本信息(包括昵称、性别、城市、国家)。

Global site tag (gtag.js) - Google Analytics