原文:http://blog.csdn.net/coolszy/article/details/6576536
本次讲解腾讯微博OAuth认证的最后一步使用授权后的Request Token换取Access Token,当我们获取到Access Token后,我们就可以进行微博平台的资源访问。
照例我们先看下交换access_token的API:
交换access_token
URL:https://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_signature:oauth请求签 名
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
分享到:
相关推荐
腾讯微博Android客户端开发——换取Access,课程下载地址:http://blog.csdn.net/coolszy。内容来源于网络分享,如有侵权请联系我删除。另外如果没有积分的同学需要下载,请私信我。
【腾讯微博Android客户端开发】涉及的关键知识点主要集中在OAuth认证机制上,这是开发腾讯微博Android客户端时必须掌握的重要概念。OAuth是一种授权协议,旨在允许第三方应用在用户授权的情况下,安全地访问用户在...
腾讯微博Android客户端开发使用OAuth 1.0A版本进行用户授权,以确保用户在使用非官方客户端时,不会直接暴露QQ号和密码,降低安全风险。 OAuth的核心思想是通过令牌(Token)机制来实现授权,而不是直接使用用户名...
本示例主要探讨的是腾讯微博Android客户端OAuth认证流程,这对于任何想要集成腾讯微博服务到Android应用的开发者来说至关重要。 OAuth(开放授权)是一种授权机制,允许第三方应用在用户许可的情况下,安全地访问...
总之,Access Token在腾讯微博Android客户端开发中扮演着核心角色,确保了用户数据的安全和应用的正常运行。正确获取和管理Access Token是实现客户端功能的关键步骤。在实际开发中,开发者需要充分理解OAuth 2.0授权...
5. 换取Access Token:使用App Key、App Secret和授权码,向腾讯微博API发送POST请求,换取Access Token和Access Token Secret。 6. 使用Access Token:通过Access Token,我们可以进行后续的API调用,获取用户信息...
(4) 获取令牌:客户端用授权码换取Access Token和刷新令牌(Refresh Token)。 (5) 使用令牌:使用Access Token向微博API发送请求,获取或操作用户数据。 3. 腾讯微博OAuth2.0授权流程 腾讯微博的OAuth2.0流程与...
- **换取Access Token**: 使用App Secret和授权码向腾讯微博服务器请求Access Token,这是一个临时的令牌,用于后续API调用。 - **刷新Access Token**: Access Token有时效性,过期后需要刷新,使用Refresh Token...
开发者通过授权码请求腾讯微博服务器换取Access Token,这个Token是实际调用API时的身份凭证。 接下来,我们要了解如何调用腾讯微博的API。API通常提供HTTP RESTful接口,开发者可以通过发送HTTP请求来获取或修改...
这个授权码会被用来换取访问令牌(Access Token)和刷新令牌(Refresh Token)。访问令牌用于后续的所有API调用,而刷新令牌可以在访问令牌过期后获取新的访问令牌。 QWeibo4j提供了丰富的API接口,可以抓取个人的...
`QQWeiBoSDK`是腾讯提供的SDK,用于获取QQ微博的Access Token。QQ的OAuth流程与新浪类似,需要注册应用,获取App ID和App Key,然后通过用户授权获取Access Token。 `DevDefined.OAuth`是一个.NET库,它抽象了OAuth...
在用户同意授权后,应用会跳转到新浪提供的授权页面,用户登录并确认授权后,应用会收到一个授权码,然后通过这个授权码换取Access Token。Access Token是应用实际进行微博操作的关键,它代表了用户的授权,可以用来...
这个压缩包"安卓Android源码——新浪、腾讯、网易、搜狐微博OAuth认证整合Android版.zip"提供了针对四大中国主流社交媒体平台——新浪、腾讯、网易和搜狐的OAuth认证整合示例代码,这对于开发者来说是宝贵的资源,...
腾讯微博开放API是开发者用于构建与腾讯微博平台交互的应用程序的重要工具。该文档详细介绍了如何通过API接口进行授权、获取用户信息、发布微博、管理时间线、处理私信、使用地理位置服务(LBS)、进行搜索、创建短...
然后在用户同意授权后,通过获取的code换取access_token,进一步获取用户信息,包括昵称、头像、性别等。 2. 新浪微博登录接口: 新浪微博API同样基于OAuth2.0协议,开发者需要在微博开放平台上申请应用,获取...
在获取到Access Token之后,开发者可以利用它来调用腾讯微博的各种API接口。这些接口涵盖了用户信息获取、发布微博、评论、转发、赞等操作。例如,`/users/show`接口用于获取用户的基本信息,`/statuses/share`接口...
用户同意授权后,会返回应用,并携带一个授权码,开发者可以利用这个授权码换取Access Token,从而进行后续的API调用。 2. **SDK集成**:下载腾讯微博的iOS SDK,将其导入Xcode项目中。配置项目的Info.plist文件,...
3. 发起分享:使用获取到的Access Token,调用腾讯微博SDK的分享接口,传递分享内容。 4. 处理分享结果:监听分享操作的回调,以便在分享成功或失败时给予用户反馈。 三、扩展到其他平台 除了腾讯微博,该项目还...
用户授权后,应用会收到一个临时的code,然后通过code换取access token,最后用access token来访问微博API,进行发布、读取等操作。 2. **腾讯微博OAuth认证**: 腾讯微博同样采用OAuth2.0协议,开发者需在腾讯...