我遇到过使用OAuth API进行身份验证的私有API(不确定它的OAuth版本或风格)。我对OAuth的工作知识并不是很好,所以我需要一些指导来解决这个问题。
以下是我能够使用Postman / Advance Rest控制器Chrome扩展程序手动测试它并成功查询以访问受保护资源的方法。
步骤1.向具有特定标头的OAuth服务URL发出POST请求。响应包括OAuth令牌
Authorization:OAuth oauth_consumer_key="<<key>>",oauth_signature_method="PLAINTEXT",oauth_signature="<<secret>>%26"
这是一个示例响应格式。响应包括OAuth令牌和Oauth令牌机密(我需要在下一步中使用它们来访问受保护资源)
oauth_token=<<token>>&oauth_token_secret=<<secret>>&oauth_session_handle=JN-eMMx1z_Tpy3sFrgzVsssF9Y_pyJaE&oauth_expires_in=3600&oauth_authorization_expires_in=86400
步骤2.在使用Key,Secret和OAuth令牌设置Authorization标头后,对受保护资源发出POST / GET请求
Authorization:OAuth oauth_consumer_key="<consumerKey>",oauth_signature_method="PLAINTEXT",oauth_signature="<consumerSecret>%26<oauth_token_secret>",oauth_token="<oauth_token>"
现在,这是我的问题:
此API使用的是什么版本的OAuth?
是否有标准OAuth客户端库执行身份验证并让我查询受保护的数据,而无需使用上述标头手动构建POST调用,获取令牌(通过解析响应并提取令牌),make另一个POST / GET手动调用与另一个格式化的标头访问受保护的资源?如果是这样的话?
我尝试了scribe-java并扩展了DefaultApi20.java,但我无法让它工作。然后我想知道我是否正确理解API版本。因为这个私有API只给我一个URL来获取令牌。不确定授权URL,请求令牌URL和访问令牌URL在此上下文中。
我甚至尝试使用适用于Java的Google oauth客户端库,但我无法找到适合我的上下文的示例。任何帮助理解这一点是值得赞赏的。
答案 0 :(得分:0)
您正在使用OAuth 1.0。 Scribe库是使用Java的方法:https://github.com/fernandezpablo85/scribe-java。在您的情况下,所谓的双腿授权就是它需要做的事情。以下是使用Scribe的{2} OAuth 1.0示例代码:http://enrico.sartorello.org/blog/2013/08/2-legged-oauth-java-client-made-easy/