`

scribe-java调用新浪oauth认证callback无效的问题

 
阅读更多
最近看了看oauth和开源的类库。
比较郁闷的是,看的是oauth2.0的文档,类库看的却都是1.0a的,呵呵。

国内很多互联网公司都做了自己的sdk,如人人的renren4j,新浪的weibo4j等等。
这就有个问题,oauth是一个标准协议,能否使用一个统一的类库呢?
当然可以,scribe就是一个不错的东东。整个项目的业务对象抽象的很好,新加一个产品,只需要在org.scribe.builder.api下增加一个新的api即可,api只需指定REQUEST_TOKEN_URL,ACCESS_TOKEN_URL,AUTHORIZE_URL。

兴奋中,马上写测试例子实验一下,就拿最近一直在用的sina微博开始。
结果在引导用户去新浪授权这块,怎么也不能跳转callback地址,只能获取授权码。

找不出问题,无奈使用weibo4j进行测试,指定callback却好使。。。
查看了两边的源码和debug值,发现scribe和weibo4j生成的base-string基本相同,但是往header里的值设定的却不相同。
scribe是向header里指定callback的,但是weibo4j却不指定。
那么weibo4j的base-string中包含callback,但是header中不包含这个信息,到了验证段是应该报错401错误的,那么为什么可以正常调用呢?
weibo4j的源码如下:
                        byte[] bytes = postParam.getBytes("UTF-8");

                        con.setRequestProperty("Content-Length",
                                Integer.toString(bytes.length));
                       
                        osw = con.getOutputStream();
                        osw.write(bytes);
                        osw.flush();

新浪是会把参数单独发送给服务器端的,而不是像scribe通过header的方式。

又从网上看了下这个问题的解决办法。
// NOTE: sina一定要再加上oauth_callback,否则只给授权码,不会跳转
authUrl = authUrl + "&oauth_callback=" + "http://www.baidu.com";

sina微博是需要手动在AuthorizationUrl中添加callback参数的。
加上后就可以正常跳转了。

推荐一篇关于国内oauth调用的文章,写的不错。
http://artori.us/something-about-oauth/
0
2
分享到:
评论

相关推荐

    Oauth实例(使用Scribe-java)

    在这个实例中,我们将使用Scribe-java库来实现OAuth与新浪微博的集成。 Scribe-java是一个轻量级的Java库,专门用于处理OAuth 1.0a和OAuth 2.0的身份验证流程。这个库简化了与各种OAuth服务提供商的交互,包括获取...

    scribe-1.3.5.jar

    scribe-1.3.5.jar

    scribe-2.2.tar.gz

    scribe-2.2.tar.gz 下载地址: https://github.com/facebook/scribe Scribe is a server for aggregating log data streamed in real time from a large number of servers. It is designed to be scalable, ...

    scribe-log4j:将日志消息发送到 Scribe 的 log4j appender

    scribe-client - 为 scribe 自动生成的 Java 客户端 scribe-log4j - scribe-log4j附加程序 scribe-example - 使用示例 入门 克隆仓库 git clone https://github.com/caiiiycuk/scribe-log4j.git 将 scribe-client ...

    scribe-ink-jdk-1.5.1.zip

    【标题】"scribe-ink-jdk-1.5.1.zip" 提供的是一个名为 "scribe-ink-jdk-1.5.1" 的软件包,可能是某个特定版本的 JDK (Java Development Kit) 实现,可能由开源社区 "scribe-ink" 开发。JDK 是开发和运行 Java 应用...

    scribe-2.1.tar.gz

    Scribe is a server for aggregating log data streamed in real time from a large number of servers. It is designed to be scalable, extensible without client-side modification, and robust to failure of ...

    metrics.eventtracker-scribe-4.1.0.zip

    《SVG 1.1与JAXB的结合:metrics.eventtracker-scribe-4.1.0.zip解析》 在IT行业中,处理图形数据时,SVG(Scalable Vector Graphics)是一种广泛应用的标准,它允许我们创建可缩放的矢量图像。SVG 1.1是这个标准的...

    scribe-apache-1.5.0.zip

    【scribe-apache-1.5.0.zip】是一款基于Apache许可的开源项目,主要用于日志收集和管理系统。Scribe最初由Facebook开发并贡献给了开源社区,它设计的目的是在一个高流量、分布式环境中集中处理和存储来自不同服务的...

    IOS应用源码——stephens2424-Scribe-iOS-9857bcd.rar

    IOS应用源码——stephens2424-Scribe-iOS-9857bcd.rar

    facebook-scribe-63e4824.tar

    这个"facebook-scribe-63e4824.tar"安装包包含的是Scribe的一个特定版本,63e4824,它是一个源代码包,需要编译后才能在Linux或Unix-like系统上运行。下面我们将深入探讨Scribe及其核心概念、功能和安装过程。 **1....

    scribe-plugin-smart-lists

    scribe-plugin-smart-lists 将文本项目符号转换为HTML列表 。 安装 bower install scribe-plugin-smart-lists 或者,您可以。 使用范例 scribe-plugin-smart-lists是一个AMD模块: require ( [ 'scribe' , 'scribe...

    scribe-version-2.01.tar.gz

    Scribe is a server for aggregating log data streamed in real time from a large number of servers. It is designed to be scalable, extensible without client-side modification, and robust to failure of ...

    scribe-plugin-link-tooltip:一个Scribe插件,用于执行MediumGoogle Docs样式的工具提示用户界面,而不是提示您插入链接

    scribe-plugin-link-tooltip 一个Scribe插件,用于执行Medium / Google Docs样式的工具提示UI,而不是用于提示插入链接的提示。例子 var scribe = new Scribe ( scribeElement ) ;scribe . use ( ...

    scribe-plugin-shared-toolbar

    require ( [ 'scribe' , 'scribe-plugin-shared-toolbar' , ... ] , function ( Scribe , scribePluginSharedToolbar , ... ) { ... } ) ; 用法 初始化 该插件需要代表工具栏的DOM Element作为参数。 require ( ...

    scribe-bus:在redis pub-sub和Scribe-js上运行的Light日志管理器,以确保您拥有一个智能仪表板来查看所有日志

    更好的日志管理 像下面这样获取控制台日志: 进入Web仪表板,如下所示: 挑战 管理日志可能是一项艰巨的任务。... 注意:此记录器不会替换默认控制台(因为默认情况下Scribe-Js起作用)。 //pass redis configurati

    scribe-plugin-sanitizer-global:https

    scribe-plugin-sanitizer-global 是一个专门为 Scribe 编辑器设计的插件,它的主要功能是为用户提供一种全局的安全过滤机制,确保在编辑和发布内容时,能够遵循特定的安全策略,防止恶意代码的注入。在互联网内容...

    scribe-plugin-image-command:用于将图像上传到 S3 的 Scribe 编辑器插件

    然后在项目中引入"scribe-plugin-image-command"的代码,配置好这些认证信息以及S3存储桶的路径。最后,注册这个插件到Scribe编辑器实例中,这样用户就能在编辑器内享受到便捷的图像上传功能。 在压缩包文件"scribe...

    scribe-plugin-section-command:用于插入标题的 Scribe 编辑器插件

    **scribe-plugin-section-command 插件详解** 在 IT 领域,尤其是前端开发中,编辑器是不可或缺的工具。Scribe 是一个强大的 HTML 富文本编辑器,它以简洁、可扩展和模块化的设计赢得了开发者们的青睐。"scribe-...

    Scribe日志记录讲解

    Scribe 是一个由 Facebook 开源的日志记录框架,它基于 Thrift 框架构建,旨在提供分布式环境下的日志收集服务。Scribe 的主要特点是其简单架构、灵活的日志格式以及支持异步消息发送和队列处理。由于它与 Thrift ...

    scribe-plugin-keyboard-shortcuts

    标题中的"scribe-plugin-keyboard-shortcuts"是一个针对名为"Scribe"的富文本编辑器的插件,主要用于添加键盘快捷键功能。Scribe是一款强大的、可定制的、原生的JavaScript富文本编辑器,旨在提供一个干净、无污染的...

Global site tag (gtag.js) - Google Analytics