`
hezhong002
  • 浏览: 21112 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

新浪、腾讯微博开放平台非标准oauth解析

阅读更多

由于工作需要,最近开始研究下微博的开放平台,而oauth则是开放平台的公认标准。


标准到了国内,那就不是标准了,各门户的实现实现方式总是有那么一点小小的区别。


现已新浪微博,腾讯微博开发平台为咧,我是基于Scribe来实现oauth授权的 ,Scribe使用灵活,实现外国的主流开放平台都没啥问题。

 

 别人是按照标准的协议来写的,到了国内总有点水土不服了


oauth授权由三个步骤组成

  1. request_token 获取未授权的Request Token
  2. authorize 请求用户授权Token
  3. access_token 获取授权过的Access Token



腾讯微博:

主要不爽的地方是 oauth协议规定如果是桌面应用或者无回调URL的话 


oauth_callback=oob ,可腾讯微博偏偏是oauth_callback=null,这在Scribe里面里面实现不鸟,需修改源码。


其次有一点要注意的  腾讯微博只支持 query-string认证模式,就是参数全拼接在超链接后面


还好这点在Scribe中得到了支持,只需设置SignatureType即可



新浪微博:

开始使用一切正常,可当我设置oauth_callback的时候,问题就来了,总是无法回调URL而是直接显示出验证码在页面上了,


煞是奇怪。。 经仔细看新浪API后原来,oauth_callback参数是在请求用户授权Token里面,而根据协议是应该放在获取未授权的Request Token里面。


这改动也太大了吧,真不靠谱。 经GOOGLE一番得知,原来这是老oauth 1.0 与 oauth 1.0a的区别。 我之所以说老,是因为 oauth 1.0a已经被被采纳


为了ouath 1.0的标准了。这新浪开发文档里面的Oauth授权说明,那不是纯忽悠吗,跟实际API严重不符啊。


抱着不死心得心态,我下载了新浪官方的SDK,通过SDK开发的应用,在第二步请求用户授权Token中不带oauth_callback是可以返回到


在第一步中获取未授权的Request Token接口中设置的oauth_callback参数URL地址。这件事情很让我无语,也让我纠结了很久,到底是什么原因了。

 

一步步跟调试SDK代码,看看其中到底有哪些偏差。


在摸索中发现,由于新浪微博支持query-string和http headers 2种认证方式。当我在Scribe使用query-string模式的时候竟然没有半点问题,暂时解决

 

Scribe不兼容新浪微博的情况。

 

可是新浪的官方SDK也没有使用query-string,那他到底有哪些神奇之处了。。。 经发现我,真是让我纠结 现跟大家分享


1.通过Scribe 在构建OAuthService的时候,设置oauth_callback 跑程序是没问题的,只是不能返回到回调URL。这说明生成的签名是不存在问题的, 这说明新浪微博有其特别的地方。


2.调试官方的SDK我发现,生成的baseString里面多了一串source而其值跟oauth_consumer_key的值相同,而这是参与签名运算的


3.生成的header里面不带oauth_callback参数,oauth_callback参数只参与签名运算


4.将oauth_callback=xxx&source=key , 一并post提交到oauth/request_token


至此就完成了新浪BT的授权过程。我将这些特例加入到Scribe 中时,成功返回到回调页面。。

 

新浪你有必要弄成这样不。。。,不想让我们玩就直说嘛,真伤不起。。

 

 

哎,敢不敢都按标准来玩啊。。 


其他开发平台尚未研究,估计也好不到哪里去吧。。

 

分享到:
评论

相关推荐

    腾讯微博开放平台

    在移动开发领域,腾讯微博开放平台为开发者提供了一个强大的工具,允许他们集成微博功能到自己的Android应用程序中。这个平台提供了丰富的API,使得开发者可以轻松实现用户登录、微博发布、信息获取等一系列操作。...

    腾讯微博 开放平台 PHP SDK2.1.2.zip

    腾讯微博开放平台PHP SDK2.1.2是一个用于与腾讯微博接口交互的开发工具包,主要服务于PHP开发者,便于他们在自己的应用中集成腾讯微博的功能。本文将深入解析这个SDK的关键知识点,包括其基本架构、主要功能、使用...

    新浪微博开放平台

    OAuth是一种更加安全、开放的标准,被广泛应用于Twitter、Sina微博、豆瓣、Google等平台。 - **交互过程**: 1. 应用通过APPKEY和APPSECRET换取OAuth_token。 2. 用户在服务商页面上对该OAuth_token进行授权...

    腾讯微博开放平台Java开发SDK

    腾讯微博开放平台Java开发SDK是一款专为Java开发者设计的工具包,它允许开发者方便地集成腾讯微博服务到自己的应用程序中,实现与微博平台的数据交互和功能扩展。这个SDK提供了丰富的API接口,涵盖了用户授权、消息...

    腾讯微博开放平台API

    在腾讯微博开放平台中,开发者需要先通过OAuth获取访问令牌,然后才能调用API进行操作。 2. **API客户端**:`api_client.php`文件可能包含了处理API请求和响应的核心逻辑。在这里,开发者可以编写代码来发送HTTP...

    新浪 腾讯微博分享

    在手机客户端 向新浪腾讯微博发送微博运用Oauth认证 第三方jar包

    新浪微博开放平台接入

    在接入新浪微博开放平台时,开发者需要注册应用,获取App Key和App Secret,然后通过OAuth流程获取用户的授权,才能合法地代表用户进行操作。 3. **JavaScript调用**:描述中提到“只需要js调用”,这意味着开发者...

    Android腾讯微博开放平台入门源代码

    在Android平台上,腾讯微博开放平台为开发者提供了丰富的接口和工具,使得应用能够与微博进行深度交互,例如发布微博、获取用户信息等。本教程通过一个入门级的源代码实例,帮助开发者了解并掌握如何利用腾讯微博API...

    新浪微博开放平台Demo源码

    新浪微博开放平台Demo源码 首先要使用这些接口是需要用户登录并且授权的,新浪微博开放平台其实是提供两种授权方式的,第一种是:OAuth授权方式,第二种是:HTTP普通鉴权方式,我们使用了第一种方式来授权,但是在...

    新浪微博开放平台SDK

    微博是中国最具影响力的社交媒体平台之一,而新浪微博开放平台SDK则是开发者们接入微博服务、构建第三方应用的重要工具。本文将深入探讨这个SDK的核心功能、使用场景以及如何通过它来扩展你的应用程序。 ### SDK...

    新浪腾讯微博oauth2.0登录授权及转发实例

    在互联网应用中,用户授权是常见的功能之一,尤其是社交媒体平台如新浪和腾讯微博。OAuth2.0是一个开放标准,用于授权第三方应用访问用户存储在另一服务上的私人资源,而无需获取用户的用户名和密码。本教程将深入...

    ios新浪微博项目视频教程:微博开放平台介绍

    在本“iOS新浪微博项目视频教程:微博开放平台介绍”中,我们将深入探讨如何利用微博开放平台为iOS应用集成社交功能。微博开放平台是新浪提供的一个开发者接口,它允许开发者通过API(应用程序接口)来实现与微博的...

    新浪微博开放平台API使用笔记及演示程序

    本文主要探讨的是“新浪微博开放平台API”的使用,结合PHP SDK和OAuth2.0用户授权机制,帮助开发者实现与新浪微博的无缝对接。 首先,让我们了解“新浪微博开放平台”。这是一个由新浪官方提供的平台,它允许开发者...

    OAuth简介及sina微博开放平台

    在sina微博开放平台上,OAuth起到了关键作用。开发者首先需要注册并创建应用,获取到App key和Secret key。这两个键是独一无二的,用来识别你的应用,并在调用微博API时验证应用的身份。App key和Secret key是连接你...

    新浪和腾讯微博Oauth认证Demo(php版)

    3./class/下,文件名中含有If的文件,定义的是接口.总计3个接口文件:各个网站的api访问路径...5.实例中2个网站(新浪微博和腾讯微博)的OAuth已经实现,并且通过验证。本例中的OAuth客户端来源于新浪微博OAuth认证SDK。

    新浪腾讯微博分享demo

    本篇文章将深入探讨“新浪腾讯微博分享demo”,这是一个专为Android平台设计的示例项目,它实现了通过Oauth2.0协议与新浪微博和腾讯微博的无缝对接,支持文字和图片的分享功能。以下我们将详细解析这个项目的重点...

    Oauth 2.0 新浪微博 腾讯微博

    OAuth 2.0 是一种广泛使用的开放标准授权框架,它允许第三方应用在用户授权的情况下,安全地访问存储在另一服务提供商上的用户数据。在本文中,我们将深入探讨OAuth 2.0的工作原理以及如何将其应用于新浪微博和腾讯...

    【第三方开放平台系列】腾讯微博Oauth2.0授权认证-源码

    腾讯微博作为中国知名的社交媒体平台,也提供了类似的开放平台,允许开发者利用Oauth2.0授权协议来实现用户身份验证和数据获取。本文将深入讲解腾讯微博Oauth2.0授权认证的原理及其在易语言中的实现。 OAuth2.0是一...

    OAuth认证以及使用网易微博开放平台实现聊天功能

    在这个场景中,我们提到的是如何利用OAuth认证结合网易微博开放平台来实现一个聊天功能。 OAuth的核心在于,它不是直接提供用户密码给第三方应用,而是通过一个授权流程,使得用户可以控制哪些应用可以访问他们的...

Global site tag (gtag.js) - Google Analytics