使用带有spring-security-oauth2.0的Google API

时间:2012-11-09 22:11:26

标签: spring-security google-api oauth-2.0 google-calendar-api

我在这里搜索了一下,但找不到我的问题的答案。

我使用 spring-sec-oAuth 2.0 (1.0.0.RC2a)实现oAuth客户端。正确设置beans.xml后,我很高兴得到一个有效的令牌,所有看起来都很好。然后,我想使用Calendar API - 我不知道如何调用以获取Calendar对象。

我的(相关)设置:(spring-servlet.xml)

<!--apply the oauth client context-->
<oauth:client   id="oauth2ClientFilter" />

<oauth:resource id="google" 
    type="authorization_code" 
    client-id="<my client id>" 
    client-secret="<my client secret>"
    access-token-uri="https://accounts.google.com/o/oauth2/token" 
    user-authorization-uri="https://accounts.google.com/o/oauth2/auth"
    scope="https://www.googleapis.com/auth/calendar"
    client-authentication-scheme="form"
    pre-established-redirect-uri="https://ohad.sealdoc.com/oauth2-client/hello" />

<bean id="googleClientService" class="com...GoogleClientServiceImpl">
    <property name="butkeDemoRestTemplate">
        <oauth:rest-template resource="google" />
    </property>

和实现类:

public class GoogleClientServiceImpl implements DemoService 
{
    private RestOperations butkeDemoRestTemplate;

    @Override
    public String getTrustedMessage() 
    {
        String dataUri = "https://www.googleapis.com/calendar/v3/users/me/calendarList?minAccessRole=writer";

        Calendar service = butkeDemoRestTemplate.getForObject(dataUri, Calendar.class);
        return "demo";
    }

}

这样做最终得到:

  

请求处理失败;嵌套异常是   错误= “INVALID_REQUEST”,   ERROR_DESCRIPTION =“{错误= [{域= usageLimits,   reason = accessNotConfigured,message = Access Not Configured}],code = 403,   message = Access Not Configured}“

当然,我在“getTrustedMessage()”中做错了,所以我听说咨询专家......我想使用OAuth2RestTemplate,但我怎么知道我应该使用的URI?搜索(谷歌)后,我发现只有谷歌代码的例子,他们使用谷歌oAuth(我不想使用它 - 我宁愿为我的客户使用Spring实现)

任何想法?

1 个答案:

答案 0 :(得分:3)

GOT IT!

我已经解决了这个问题(通过简单地在Google APIs Console, under "Services"中启用特定服务来获取“403,message = Access Not Configured”)...