`
yunlonglove
  • 浏览: 231107 次
社区版块
存档分类
最新评论

android 腾讯微博分享功能实现(oauth代替openkey&openid请求)

 
阅读更多

最近腾讯微博官方网站API有的更新,不过也好久了.网上想找些案例,可是都没有介绍,好是郁闷,不过现在解决了,如果有类似问题的同学们,可以参考下,

这次的比较简单,对我们开发应用的程序员比较不错.下面我简单介绍下微博API的应用。

官方网址

为了顾全所有版本,我们就就用括号里面的jar包.

这里我就不详细介绍了,不懂的可以参考官方文档,很详细的.

下面这个是发表一条微博的接口参数:

首先我们就要获取Oauth或者是openid&openkey,但是我研究了好久没有弄出来,官方文档说,在请求时候callback不为空,在授权后redirect_url中会包含这两个值,但我看了官方给出例子的源码,他们根本就没有运用openid和openkey,他们用的是Oauth对象.所以我也跟着用Oauth对象请求.

不明白的可以参考源码.

我这里简单的说明一下:

/***
	 * 获取腾讯requestToekn后的OAuthV1
	 * 
	 * @throws Exception
	 */
	public static OAuthV1 getOAuthV1() throws Exception {
		OAuthV1 oAuth = new OAuthV1(Constant.TencentWeiBo.callback);
		oAuth.setOauthConsumerKey(Constant.TencentWeiBo.consumerKey);
		oAuth.setOauthConsumerSecret(Constant.TencentWeiBo.consumerSecret);
		oAuth = OAuthV1Client.requestToken(oAuth);
		return oAuth;
	}

/***
	 * 腾讯认证
	 */
	public void TencentOauth(Context context) {
		try {
			oAuth = oauth.getOAuthV1();
		} catch (Exception e) {
			e.printStackTrace();
		}
		Intent intent = new Intent(context, OAuthV1AuthorizeWebView.class);
		intent.putExtra("oauth", oAuth);
		startActivityForResult(intent, requestCode);
	}
OAuthV1AuthorizeWebView
/***
	 * 认证回调
	 */
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		if (requestCode == 1) {
			if (resultCode == OAuthV1AuthorizeWebView.RESULT_CODE) {
				oAuth = (OAuthV1) data.getExtras().getSerializable("oauth");

				try {
					oAuth = OAuthV1Client.accessToken(oAuth);

					System.out.println(oAuth.getOauthToken() + ",,"
							+ oAuth.getOauthTokenSecret() + ",," + ",,"
							+ oAuth.getOauthConsumerSecret());
					
					System.out.println(oAuth.getParamsList());

				} catch (Exception e1) {
					e1.printStackTrace();
				}
			}
		}
	}
我们调用API接口的时候只需要把oAuth作为参数穿进去就OK了,

tAPI = new TAPI("1.0");

tAPI.add(oAuth, "json", "腾讯就是牛逼...", "127.0.0.1");

这样就完成了调用,很简单吧.

但是现在还有一个问题:我们分享的时候总不能每次都授权认证吧,我们需要保存一些值,是的,我们需要把accessToken,accessTokenSecret在这里我们这样获取到:oAuth.getOauthToken();oAuth.getOauthTokenSecret() ;腾讯比较省事,把未授权的和授权后的用同一个变量和方法,不过她们会根据不同的请求变化.不懂得看API或源码,

保存好值后,我们在每次调用API的时候只需要创建oAuth对象,把相应值set进去就可以了,其实这样是行不通的,这点和新浪微博不太一样, 通过源码,可以得知,我也是大致说一下,因为我的水平有限,

  public String postContent(String url, List<NameValuePair> paramsList, OAuth oAuth) throws Exception {

        if(null==qHttpClient){
            throw new OAuthClientException("1001");
        }
        OAuthV1 oAuthV1 = (OAuthV1) oAuth;
        paramsList.addAll(oAuthV1.getTokenParamsList());

        String queryString = OAuthV1Client.getOauthParams(url, "POST", oAuthV1.getOauthConsumerSecret(),
                oAuthV1.getOauthTokenSecret(), paramsList);

//        log.info("RequestAPI postContent queryString = " + queryString);
        return qHttpClient.httpPost(url, queryString);
    }
这是源码最终执行发送微博的方法,我们可以看到,她用了参数有:oAuthV1.getTokenParamsList(),oAuthV1.getOauthConsumerSecret(),oAuthV1.getOauthTokenSecret(),总共这三个参数,可是我们新new的Oauth对象里面没有TokenParamsList(),所以会一直执行失败,因此我们要想办法把这个ParamsList参数传进去.

其实源码看了不是很懂,因为基础差,就断点查看,oAuthV1这个对象里面到底有那些属性值,通过发现,其实也就是authV1 = OAuthV1Client.requestToken(authV1);这个方法执行后的对象,所以现在问题就解决了,

重:我们获取到accessToken,accessTokenSecret,后,在以后访问分享微博的时候,我们不需要newoAuthV1()对象,而是获取重新获取Reuqest_Token后的对象,也就是我上面写的那个方法.这样就解决了问题。

好了,我就讲这么多了,其实很简单呐,但是也纠结了我好久。

至于Demo我就不上传了,因为真的很简单,相信你也会“小葱拌豆腐”吧.

分享到:
评论

相关推荐

    腾讯qq 的openId java版

    - **OAuth协议**:QQ OpenID的实现基于OAuth 2.0协议,用于安全地获取和验证用户的授权。 - **HTTP请求库**:如Apache HttpClient或OkHttp,用于向QQ服务器发送请求和接收响应。 - **URL解析**:需要理解如何从重...

    腾讯微博提示missing parameter errorcode 102 错误的解决方法

    总之,处理腾讯微博提示的“missing parameter errorcode 102”错误,开发者需要确保在OAuth2请求中包含`oauth_version`参数,并设置为`2.a`。同时,理解和遵循API的调用规则以及错误处理机制,对于避免类似问题至关...

    腾讯&新浪&网易第三方登陆API

    新浪还提供了分享、关注、评论等其他微博社交功能的API。 3. **网易开放平台(NetEase Open Platform)** - **网易163邮箱登录API**:网易提供了邮箱登录服务,适用于需要邮箱验证的场景。开发者需要在网易开放...

    第三方登录(新浪,腾讯,人人网)

    新浪微博提供SDK和API文档,开发者可以通过注册应用,获取App Key和App Secret,然后使用OAuth 2.0协议进行授权。用户在新浪授权后,应用会得到一个Access Token,用于后续请求用户的个人信息。 4. 腾讯QQ登录SDK...

    python QQ第三方登陆

    Python中的QQ第三方登录实现主要依赖于腾讯开放平台提供的OAuth2.0协议,这是一种授权机制,允许第三方应用在用户授权的情况下获取其在QQ账号的相关信息。本文将深入探讨如何使用Python来构建QQ第三方登录功能。 ...

    QQ授权登录、微信授权登录Demo

    QQ授权登录是腾讯公司提供的一种开放平台服务,通过OAuth2.0协议实现。它允许第三方应用请求用户的QQ账号权限,获取用户的基本信息,如昵称、头像等,以便进行登录验证。在Android平台上实现QQ授权登录,你需要集成...

    QQ8.8模拟名片赞例程

    QQ Open API是腾讯为开发者提供的接口,允许他们创建与QQ应用交互的应用程序。这些API涵盖了多种功能,包括社交互动如发送消息、添加好友以及我们关注的名片赞等。开发者需要注册成为QQ开放平台的开发者,并获取相应...

    第三方网站接入qq登录的实例及配置文件

    这个跳转可以通过生成一个重定向URL来实现,URL中包含你的appid、redirect_uri(回调地址)以及请求的权限范围。例如: ```php $authUrl = ...

    asp.net实现qq登陆

    QQ登录是腾讯公司提供的开放平台服务之一,允许第三方应用通过API接口实现用户授权登录。这种方式通常称为OAuth2.0授权机制,它为开发者提供了安全、便捷的身份验证方式。 实现QQ登录的关键步骤包括以下几个方面: ...

    java源码:QQ登录的Java接口 open-qq.zip

    【标题】"java源码:QQ登录的Java接口 open-qq.zip" 描述了一个Java编程项目,它提供了实现QQ登录功能的接口。这个开源项目很可能包含了一整套用于与腾讯QQ API交互的类和方法,使得开发者能够在自己的Java应用程序...

    灯鹭社会化多帐号登录插件 for 天天团购 v1.0

    3. **腾讯微博登录**:腾讯微博登录基于OAuth 2.0协议,开发者需要在腾讯开放平台上注册应用,获取必要的认证信息。用户授权后,插件会获取微博用户的唯一标识,实现登录功能。 4. **新浪微博登录**:新浪微博也...

    QQ授权登录代码

    2. **QQ开放平台**:腾讯提供了QQ开放平台(QQ Open Platform),为开发者提供了各种API和服务,包括QQ登录功能。开发者需要在开放平台上注册并创建应用,获取App ID和App Key,这两个参数在后续的授权过程中至关...

    qqconnection.zip

    "qqconnection.zip"这个压缩包可能包含了一个简易的示例项目,用于演示如何实现这一功能。下面我们将深入探讨相关的知识点。 首先,我们要了解Spring Boot框架。Spring Boot是由Pivotal团队提供的全新框架,其设计...

    QQ在线客服例子

    这个PPT可能还包含了截图和案例分析,帮助开发者更好地理解和实现QQ在线客服功能。 总之,QQ在线客服的实施涉及到了OAuth2.0授权流程、API调用和前端集成等多个方面,对于提升用户体验和提高客户服务质量具有重要...

    QQ登陆接口

    ### QQ登录接口详解 ...本文档将深入解析QQ登录的实现步骤,包括申请接入、配置环境、接口调用及其实现...通过上述步骤,开发者可以顺利实现QQ登录功能,并利用QQ开放平台提供的各种接口,提升应用的功能性和用户体验。

    网页上的QQ登录API代码

    以下是关于如何实现这一功能的详细知识点: 1. **QQ开放平台(Tencent Open Platform, TOP)**: QQ开放平台允许开发者通过API接口与QQ服务进行交互,提供包括用户身份验证、社交关系链共享等多种服务。要实现QQ...

Global site tag (gtag.js) - Google Analytics