0

我想在我的 grails 应用程序中连接 Google 日历、Google 联系人和 Google+。我一次只能将一项谷歌服务与可用的谷歌提供商连接。所以我必须添加新的自定义提供程序。

我的代码是

package org.scribe.api;
import org.scribe.builder.api.DefaultApi10a;
import org.scribe.model.*;


public class GoogleContactApi extends DefaultApi10a
{
private static final String AUTHORIZATION_URL = "https://www.google.com/accounts/OAuthAuthorizeToken?oauth_token=%s";

@Override
public String getAccessTokenEndpoint()
{
    return "https://www.google.com/accounts/OAuthGetAccessToken";
}

@Override
public String getRequestTokenEndpoint()
{
    return "https://www.google.com/accounts/OAuthGetRequestToken";
}


@Override
public String getAuthorizationUrl(Token requestToken)
{
    return String.format(AUTHORIZATION_URL, requestToken.getToken());
}
}

我的配置

googleContact{
        api = org.scribe.builder.api.GoogleApi           

        key = '1xxxxxxxx'
        secret = 'xxxxxxxxxx'

        scope = 'https://www.google.com/m8/feeds'
        callback = "${grails.serverURL}/oauth/google/callback"
        successUri = "${grails.serverURL}/oauthCallBack/googleContact"
    }

但我收到错误 Unknown provider googleContact,请检查您的配置..

请提供指导。

4

1 回答 1

1

无需创建自定义提供来将 google 与不同的 google 应用程序连接起来。

只需要在代码中给出不同的提供者名称,例如,

配置文件

google {
    api = org.scribe.builder.api.GoogleApi
    key = 'XXX'
    secret = 'YYY'

    scope = 'https://www.googleapis.com/auth/userinfo.profile'

    callback = "${grails.serverURL}/oauth/google/callback"
    successUri = "${grails.serverURL}/oauthCallBack/google"
}

googlecontact {
    api = org.scribe.builder.api.GoogleApi
    key = 'XXX'
    secret = 'YYY'

    scope = 'https://www.googleapis.com/auth/calendar'              

    callback = "${grails.serverURL}/oauth/googlecontact/callback"
    successUri = "${grails.serverURL}/oauthCallBack/googlecontact"
}

看法

<oauth:connect provider="googlecontact">Google Contact</oauth:connect>
<oauth:connect provider="google">Google</oauth:connect>

OauthCallBackController

def google() {
    // your code
}

def googlecontact(){
    // your code
}

注意:googlecontact如果您使用则使用,googleContact然后您会出错。

于 2013-10-02T18:30:36.690 回答