Android腾讯微博之1.0 Oauth认证

(1)什么是Oauth?

Oauth是一个开放的认证协议,让你可以在Web或桌面程序中使用简单而标准的,安全的API认证。

同时,任何第三方都可以使用Oauth认证服务,任何服务提供商都可以实现自身的Oauth认证服务,因而Oauth是开放的。

业界提供了Oauth的多种实现如PHP、JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间,因而Oauth是简易的。

互联网很多服务如Open API,很多大公司如Google,Yahoo,Microsoft等都提供了Oauth认证服务,这些都足以说明Oauth标准逐渐成为开放资源授权的标准。

(2)我们为什么要用Oauth?

网络开放是一个不变的趋势,那么不可避免的会有各种网络服务间分享内容的需要。

举个我们身边例子吧:比如某个公司做了一个应用,想要调用QQ邮箱的联系人列表,现在的方法是你需要在他们应用里输入你的QQ号,QQ密码才能调用,

虽然他们都自谓“不保留QQ用户名和密码”,但是你们相信吗?我们信息已经暴漏给这家公司了,又有谁知道他们到底用没用我们的信息进行一些我们所不允许的事情呢?

OAuth就是为了解决这个问题而诞生的,当我们访问某个公司应用,再调用QQ邮箱的联系人列表,不再提交你的用户名,密码到他们公司而是提交到腾讯公司的服务器。

这样好处自己是安全,而且不会泄露你的隐私给不信任的一方。

再说一个典型案例:

如果一个用户拥有两项服务:一项服务是图片在线存储服务A,另一个是图片在线打印服务B。如

下图所示。由于服务A与服务B是由两家不同的服务提供商提供的,所以用户在这两家服务提供商的网站上各自注册了两个用户,

假设这两个用户名各不相同,密码也各不相同。当用户要使用服务B打印存储在服务A上的图片时,用户该如何处理?

法一:用户可能先将待打印的图片从服务A上下载下来并上传到服务B上打印,这种方式安全但处理比较繁琐,效率低下;

法二:用户将在服务A上注册的用户名与密码提供给服务B,服务B使用用户的帐号再去服务A处下载待打印的图片,这种方式效率是提高了,但是安全性大大降低了,服务B

以使用用户的用户名与密码去服务A上查看甚至篡改用户的资源。

很多公司和个人都尝试解决这类问题,包括Google、Yahoo、Microsoft,这也促使OAUTH项目组的产生。

OAuth是由Blaine Cook、Chris Messina、Larry Halff 及David Recordon共同发起的,目的在于为API访问授权提供一个开放的标准。

(3)Oauth中角色

1.ServiceProvider(服务提供商)

ServiceProvider通常是网站,在这些网站中保存着用户的一些受限制的资源,例如图片共享网站,博客或者微博系统等。

这些网站通常是使用用户名和密码来确认用户的身份。一方面负责验证用户身份,另一方面保存用户信息。

在我们要开发的腾讯微博客户端的服务提供商就是腾讯开放平台。

2.User(用户)

持有登录网站的用户名、密码,并在网站上保存了一些信息,例如照片等.用户不希望把这些私人信息公开,但是用户却需要将这些信息

共享给其他网站。我们有时却希望能够被另一个应用程序访问。

3.Consumer(客户)

希望访问用户私人信息的应用程序,可以是web应用程序,桌面应用程序或者手机应用程序。Consumer需要授权后才能访问相应资源。

我们所开发的应用程序就是Consumer.我们的应用程序是希望能够访问用户的私人信息的,但是我们又不能够得到用户的用户名和密码,那这个中间就有一个

授权的过程。

4.ProtectedResources

被保护的资源。

(4)Oauth验证流程

对于Consumer来讲他无法得到用户的用户名和密码,那他怎么才能得到用户的某些私人信息呢?基本流程如下:

第一步:某个用户想使用我们创造的应用程序。他无法得到用户的用户名和密码,所以不能直接使用用户的信息。

第二步:Consumer就会向Service Provider请求访问用户的资源。

第三步:Service Provider 就会向用户询问是否可以同意Consumer访问用户的资源。

第四步:如果同意,用户就告诉Service Provider向Consumer授权访问。

第五步:Consumer获的授权。

第六步:Consumer就会服务该用户。Consumer就会向Service Provider取得该用户的一些信息,显示给该用户。

(5)Oauth验证过程

第一步:首先是我们的应用程序也就是Consumer向Service Provider请求一个Token(令牌),然后Service Provider会提供我们一个请求令牌。

第二步:将用户的页面定向到一个验证页面,这个页面不是我们Consumer提供的页面,而是由Service Provider提供的,在我们这就是腾讯提供的验证页面。

在这里输入你的用户名和密码来验证你的身份。从这可以看出用户提交的用户名和密码并没有提交给我们编写的Consumer,而是提交给了Service Provider即腾讯。

这样就能保证用户的用户名和密码不会泄露,不会让第三方知道。

第三步:由Service验证用户输入的用户名和密码是否正确,如果正确就提示登陆成功。

第四步:登陆成功之后再把这个页面重定向到我们自己的页面上。Service就会通知Consumer该用户没问题,同时会分配Consumer一个授权过后的令牌。

第五步:Consumer通过这个授权之后的令牌来换取一个访问令牌,得到这个访问令牌之后我们的验证就结束了。

第六步:通过这个访问令牌就可以访问该用户的私人信息了。

从上面的步骤可以看出,用户始终没有将其用户名与密码等信息提供给使用者(第三方软件),从而更安全。

Android腾讯微博之1.0 Oauth认证,布布扣,bubuko.com

时间: 2024-12-19 02:12:20

Android腾讯微博之1.0 Oauth认证的相关文章

Android腾讯微博开发之随机字符串与签名实现

Android腾讯微博开发入门之随机字符串与签名实现 直接上代码 1.Utils类,包括签名和随机字符串 import java.util.Random; import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; /** * * @author mrlixirong * * 2011-11-16 */ public class Utils { //签名 public static String getSignature(St

[iOS微博项目 - 2.0] - OAuth授权3步

A.概念 OAUTH协议为用户资源的授权提供了一个安全的.开放而又简易的标准.与以往的授权方式不同之处是OAUTH的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此OAUTH是安全的.oAuth是Open Authorization的简写. B.使用3步骤 OAUTH认证授权就三个步骤,三句话可以概括: 1. 获取未授权的Request Token 2. 获取用户授权的Request Token 3. 用授权的Requ

腾讯微博OAuth2.0认证介绍

腾讯微博开放平台,是基于腾讯微博系统,为广大开发者和用户提供的开放数据分享与传播平台. 广大开发者和用户登录平台后,就可以使用平台提供的开放API接口,创建应用从微博系统获取信息,或将新的信息传播到整个微博系统中,丰富多样的API接口和应用,加上您的智慧,将创造出无穷的应用和乐趣. 在使用腾讯微博平台提供的API前,您需要做以下两步工作: 成为开发者,并申请appkey和appsecret 授权获取accesstoken Accesstoken是第三方获得用户授权的凭证,是第三方访问api资源的

通过输入方式在Android上进行微博OAuth登录

在微博认证方式里,基本的OAuth认证是必须要调整到跳转到第三方页面上进行授权的,例如下面的例子: 1.从http://open.weibo.com/wiki/index.php/SDK#Android下载SDK包. 2.在AndroidExample/src/weibo4android/Weibo.java中填入App key和App Secret. public class Weibo extends WeiboSupport implements java.io.Serializable

接入新浪、腾讯微博和人人网的Android客户端实例 接入新浪、腾讯微博和人人网的Android客户端实例

做了个Android项目,需要接入新浪微博,实现时也顺带着研究了下腾讯微博和人人网的Android客户端接入,本文就跟大家分享下三者的Android客户端接入方法. 一.实例概述 说白了,接入微博就是让你的应用程序可以调用新浪微博,腾讯微博和人人网的api,实现微博发送,分享给好友等等的功能啦.当然也可以实现让你的客户端使用微博账号进行登录.我们这篇文章要讲的就是访问这些社交平台提供的api的时候比较关键的一步,获取调用api接口的token,token可以理解为我们的客户端程序与社交平台api

腾讯微博android客户端 (开源软件)

2013年底,完全采用开源中国客户端的UI,修改了个腾讯微博客户端, 需要熟悉腾讯开放平台API的同学可以看看,算是对社区的回馈吧! 项目介绍:http://www.oschina.net/p/android-hao 相关学习资料请参考我的博客: http://my.oschina.net/zhongwenhao/blog?catalog=351790 项目托管在:http://git.oschina.net/jxlgzwh/android-hao 有时间会把项目托管至github 以实现的功能

腾讯微博java(android)sdk新增微博api详细介绍

本文主要介绍腾讯微博android sdk中新增微博有关的8个接口,以及使用的示例代码 注意:以下所有的api示例代码都需要先新建QqTSdkService类对象qqTSdkService并初始化,见sdk使用总介绍 1.8个接口介绍 这8个接口包含了腾讯微博两部分api 1.1.微博相关中的发表一条微博.转播一条微博.回复一条微博.发表一条带图片微博.点评一条微博.发表音乐微博.发表视频微博.发表心情帖子.在api中发表一条微博和发表一条带图片微博合二为一. 1.2.私信相关中的发私信api

ANDROID_MARS学习笔记_S04_005_用sing-post向腾讯微博发一条信息

一.代码流程 1.组织好sign-post需要的token,secrect 2.组织好发微博需要的信息 3.用sign-post进行签名 4.把签名结果从header中拿出来,转成entity,用httpclient以post的形式发送微博 二.简介 三.代码1.xml(1)activity_main.xml 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android

JS模仿腾讯微博app撕纸效果

本来想用css3来实现,但后来脑袋一热就用了js,省的别人你ie怎么没效果啊!在腾讯微博app上看到的一个效果,鼠标击哪里就撕了哪里,跟撕报纸似的,任意点击左边面的灰色区域,查看效果,当时觉得很有意思,问了下高人,突然觉悟了,原来如此. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dt