Плагин Grails OAuth Как создать новый пользовательский провайдер

Я хочу подключиться к календарю Google, контактам Google и Google+ в своем приложении Grails. Я могу одновременно подключить только одну службу 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"
    }

Но я получаю сообщение об ошибке Неизвестный провайдер googleContact, проверьте конфигурацию.

Пожалуйста, предоставьте руководство.


person Neeraj Bhatt    schedule 02.10.2013    source источник


Ответы (1)


Нет необходимости создавать настраиваемый поставщик для подключения Google к различным приложениям Google.

Просто нужно указать другое имя провайдера в коде, например,

Config.groovy

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, вы получили ошибку.

person MKB    schedule 02.10.2013