我正在尝试创建OAuth 2.0提供程序和能够使用OAuth 2.0连接到提供程序的Android应用程序。我有以下设置:
一个tomcat服务器,其中包含来自springsource的名为'sparklr'的J2EE示例OAuth 2.0提供程序。当我使用'Tonr'示例进行测试时,它的效果非常好。 现在我想要一个与示例Tonr应用程序大致相同的Android应用程序。使用OAuth 2.0从sparklr应用程序访问照片资源
但是我被卡住了。我正在使用已被移动到apache琥珀色的leeloo库。确切地说,我正在使用以下教程:http://simpleprogrammer.com/2011/05/25/oauth-and-rest-in-android-part-1/该应用程序的第一个fase工作。浏览器启动,我得到sparklr页面登录并授权请求。 但是当我尝试获取访问令牌时,应用程序崩溃了。我没有从logcat中获得任何更好的知识,因此我使用debug来获取请求。以下代码构建请求:
request = OAuthClientRequest.tokenLocation("http://10.106.0.16:8084/sparklr/oauth/token")
.setGrantType(GrantType.AUTHORIZATION_CODE)
.setClientId("tonr")
.setClientSecret("secret")
.setRedirectURI("MyOAuth2POC://oauthresponse")
.setCode(code)
.setScope("trust")
.buildBodyMessage();
所有参数都在那里,看起来对我来说是正确的。但我得到以下输出:
{“error”:“invalid_grant”,“error_description”:“无效 授权码:MASCID“}
因此,scope参数明显出现问题。我试图将它设置为'信任'而不是'读'但没有不同的结果。我是否需要在sparklr应用程序中更改某些内容?或者我在Android应用程序上做错了什么,以及什么?
希望有人可以提供帮助。
THX!
答案 0 :(得分:0)
问题不在我的网址中,而是在我的请求令牌的网址中获取访问令牌。
我没有在那里指定范围。
我将参数添加到我的网址以进行授权,如下所示:http://.../sparklr/oauth/authorize?scope=read&response_type=code
现在确实有效。
我看错了地方..