读书人

OAuth认证引见及腾讯微博OAuth认证示例

发布时间: 2012-06-28 15:20:03 作者: rapoo

OAuth认证介绍及腾讯微博OAuth认证示例

本文主要介绍OAuth的用处OAuth的流程腾讯微博OAuth认证示例(新浪、人人类似)以及一些认证的异常。

?

1、OAuth介绍

目前很多主流的用户权限认证都是用OAuth,像google、microsoft、yahoo、人人、新浪微博、腾讯微博。只不过各自使用的OAuth版本可能略有不同。

使用OAuth的一个好处就是在用户向服务器数据请求时,避免了每次都需要传输用户名和密码,通过access token和secret使得用户在正常访问数据的同时保证了用户帐号的安全性。

OAuth比较适合的web应用程序和提供服务器端api或者两者混合的场景,OAuth支持目前大部分的主流语言

更多关于OAuth见:http://www.oauth.net

?

2、OAuth流程

OAuth的流程最终的结果是为了得到可以访问数据的access token和ccess secret(可能没有),以后就通过此access token和access secret和服务器进行交互。

大致的流程分为三步(OAuth1.0和2.0可能有点差异):

a 先获得一个未授权的request token,或者叫request code

b 以上步的未授权的token换取授权的request token和request secret(可能没有),这一步之后一般会提示输入用户名、密码

c 使用上步授权后的request token换取access token和access secret(可能没有)

现在就得到了access token和ccess secret(可能没有),使用它们就可以同服务器交互访问数据,而不用每次传递用户名和密码

?

3、腾讯微博OAuth api介绍

目前腾讯微博使用的是OAuth1.0、新浪微博使用的是OAuth2.0、人人网使用的是OAuth2.0,这里只介绍腾讯微博,关于人人和新浪类似,大家可以自己修改。

因自己写的腾讯微博sdk中默认不带oauth认证过程,不少朋友问到如何进行认证,这里就大致贴代码介绍下,有点长,可看下大概明白意思,自己再根据需要精简。主要分为三个部分:

第一部分:调用认证函数,跳转到认证页面

认证函数如下

b. QqTSdkService、MapUtils、QqTConstant、HttpUtils的引用见腾讯微博java(android) api?

c. SnsContant 中的一些常量定义如下

a. R.layout.web_view为

b.?CodeRules.getActivityClass(CodeRules.getActivityNameFromUrl(callBackUrl));作用是从url中获得到activity对应的类,方便在跳转回activity,即根据"appName://activityClassName"得到activityClassName的Class

c.?public void onPageStarted(WebView webView, String url, Bitmap favicon)表示监听webView页面开始加载事件

if (url != null && url.startsWith(callBackUrl)) 表示认证已经成功,开始加载callBackUrl("appName://activityClassName"),这个时候我们让它跳转到对应的activity,这个时候的url中已经包含了accessToken和accessSecret

?

在第一部分startActivity后跳转到认证页面,填入帐号和密码并点击授权便可进入上面c的onPageStarted,这个时候我们已经得到了accessToken和accessSecret

?

第三部分 认证返回处理

在返回的activity中添加OnNewIntent函数,需要在AndroidManifest.xml中添加相应的activity的属性android:launchMode="singleTask"

java.lang.Exception: javax.net.ssl.SSLHandshakeException: org.bouncycastle.jce.exception.ExtCertPathValidatorException: Could not validate certificate signature.

原因应该是以上请求的ssl证书已经不可用,将https改为http即可,如http://open.t.qq.com/cgi-bin/request_token

?

读书人网 >移动开发

热点推荐