android-OAuth2请求缺少参数access_token

android-OAuth2请求缺少参数access_token,第1张

概述我正在使用ApacheAmber库尝试在我的控制下从网站检索OAuth2访问令牌.我的客户端代码在Android下运行.我的代码以示例为例:https://cwiki.apache.org/confluence/display/AMBER/OAuth+2.0+Client+Quickstart第一步,我可以通过使用WebView浏览器提交GET请求来检索“代码”:OAuthC

我正在使用Apache Amber库尝试在我的控制下从网站检索OAuth2访问令牌.我的客户端代码在Android下运行.

我的代码以示例为例:

https://cwiki.apache.org/confluence/display/AMBER/OAuth+2.0+Client+Quickstart

第一步,我可以通过使用WebVIEw浏览器提交GET请求来检索“代码”:

OAuthClIEntRequest request = OAuthClIEntRequest .authorizationLocation(AUTHORIZE_URL) .setClIEntID(CLIENT_ID) .setRedirectURI(REDIR_URL) .setResponseType(CODE_RESPONSE) .buildqueryMessage(); webvIEw.loadUrl(request.getLocationUri());

我使用WebVIEwClIEnt回调来捕获带有“ code”参数的重定向URL.到现在为止还挺好.

使用该代码,我尝试检索访问令牌:

OAuthClIEnt oAuthClIEnt = new OAuthClIEnt(new URLConnectionClIEnt());OAuthClIEntRequest request = OAuthClIEntRequest  .tokenLocation(ACCESS_TOKEN_URL)  .setGrantType(GrantType.AUTHORIZATION_CODE)  .setClIEntID(CLIENT_ID)  .setClIEntSecret(CLIENT_SECRET)  .setRedirectURI(REDIR_URL)  .setCode(code)  .buildBodyMessage();GitHubTokenResponse oAuthResponse =   oAuthClIEnt.accesstoken(request, GitHubTokenResponse.class);

每次运行代码时,我都会收到OAuthProblemException,该消息是由于缺少参数access_token而导致我的请求无效.

另一个StackOverflow帖子提到了来自类似OAuth2请求的此异常,在这种情况下,该异常是由OAuth请求中的不同重定向URI引起的.但是我通过使用命名常量来确保重定向URI相同.这是该帖子的链接:

OAuthProblem, missing parameter access_token

现在,我可以打印出第一个请求返回的代码,并将其粘贴到从我的台式机运行的curl命令中:

curl -d“代码= …& clIEnt_ID = …& clIEnt_secret = …& grant_type = …& redirect_uri = …” http://my_website.com

并且我从我的网站上获得了一个带有access_token的不错的JsON响应.

为什么从Java的调用失败,而我手动滚动的命令行成功了?

解决方法:

我在实现客户端和服务器时遇到了相同的问题,该问题与Apache Amber(oltu)项目中的ClIEnt Example中的一个错误有关:

首先,您有Auth代码请求(有效):

OAuthClIEntRequest request = OAuthClIEntRequest    .authorizationLocation(AUTHORIZE_URL)    .setClIEntID(CLIENT_ID)    .setRedirectURI(REDIR_URL)    .setResponseType(CODE_RESPONSE)    .**buildqueryMessage**();

其次是关于访问令牌的请求(无效):

OAuthClIEntRequest request = OAuthClIEntRequest    .tokenLocation(ACCESS_TOKEN_URL)    .setGrantType(GrantType.AUTHORIZATION_CODE)    .setClIEntID(CLIENT_ID)    .setClIEntSecret(CLIENT_SECRET)    .setRedirectURI(REDIR_URL)    .setCode(code)    .**buildBodyMessage**();

错误与第二个请求中的buildBodyMessage()有关.通过buildqueryMessage()对其进行更改.

总结

以上是内存溢出为你收集整理的android-OAuth2请求缺少参数access_token全部内容,希望文章能够帮你解决android-OAuth2请求缺少参数access_token所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1075261.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存