Как получить токен доступа из запроса токена для OpenID + OAuth, используя Java - PullRequest
1 голос
/ 22 октября 2010

Я пытаюсь реализовать гибридный протокол OpenID + OAuth в моем приложении для Google. Я получаю токен запроса. Поэтому следующим шагом в качестве документа в федеративном входе является токен запроса на обмен для токена доступа.

Я пробовал использовать библиотеку Java OAuth, но я не получаю токен доступа. Я пытаюсь как 3-х, так и 2-х сторонние подходы не удаются.

Кто-нибудь может сделать гибридный протокол?

    GoogleOAuthParameters oauthParameters = new GoogleOAuthParameters();
        oauthParameters.setOAuthConsumerKey(consumerKey);
        oauthParameters.setOAuthConsumerSecret(consumerSecret);

        calendarService = new CalendarService("marketplace-hello");
        try {
            calendarService.setOAuthCredentials(oauthParameters, 
new OAuthHmacSha1Signer());
            CalendarEventFeed results = calendarService.query(calendarFeedUrl, 
CalendarFeed.class);
        }
 catch (OAuthException e) 
{      
throw new ServletException("Unable to initialize calendar service", e); 
}

Это выбрасывает com.google.gdata.client.authn.oauth.OAuthException: oauth_token не существует.

oAuthParameters.setOAuthType (OAuthType.TWO_LEGGED_OAUTH); и xoauth_requestor_id attibute для feedURL, если я добавляю эти строки в код, я получаю исключение Invalid AuthSub Token, я не знаю, почему он говорит Invalid AuthSub.

1 Ответ

1 голос
/ 01 декабря 2010

Мой ответ здесь может помочь вам.

Или попробуйте это с вашим запросом Token:

import net.oauth.OAuth;
import net.oauth.OAuthAccessor;
import net.oauth.OAuthConsumer;
import net.oauth.OAuthMessage;
import net.oauth.OAuthServiceProvider;
import net.oauth.client.OAuthClient;
import net.oauth.client.httpclient4.HttpClient4;

public class Try {

    public static void doit(String requestToken) throws Exception {

        String requestUrl = "https://www.google.com/accounts/OAuthGetRequestToken";
        String authorizeUrl = "https://www.google.com/accounts/OAuthAuthorizeToken";
        String accessUrl = "https://www.google.com/accounts/OAuthGetAccessToken";
        String consumerKey = "XXXXX";
        String consumerSecret = "XXXXX";
        String callbackUrl = "XXXXX";

        OAuthServiceProvider provider = new OAuthServiceProvider(requestUrl,
                authorizeUrl, accessUrl);

        OAuthConsumer consumer = new OAuthConsumer(callbackUrl, consumerKey,
                consumerSecret, provider);

        consumer.setProperty(OAuth.OAUTH_SIGNATURE_METHOD, OAuth.HMAC_SHA1);

        OAuthClient client = new OAuthClient(new HttpClient4());

        OAuthAccessor accessor = new OAuthAccessor(consumer);
        accessor.requestToken = requestToken;

        OAuthMessage result = client.getAccessToken(accessor, null, null);

        System.out.println(accessor.accessToken);
        System.out.println(accessor.tokenSecret);
    }
}
...