我正在使用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所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)