Проблемы со Scribe - PullRequest
       46

Проблемы со Scribe

1 голос
/ 20 декабря 2011

Я использую писец для создания приложения с поддержкой oauth.С Twitter я не нашел проблем, но при использовании Facebook у меня проблемы ...

Это код, который работает в твиттере oauth

OAuthService s = /* ... Facebook oauth init ... */
final Token requestToken = s.getRequestToken();
final String authURL = s.getAuthorizationUrl(requestToken);

Это выдает ошибку привторая строка:

12-20 10:01:31.475: E/AndroidRuntime(5405): java.lang.UnsupportedOperationException: Unsupported operation, please use 'getAuthorizationUrl' and redirect your users there
12-20 10:01:31.475: E/AndroidRuntime(5405):     at org.scribe.oauth.OAuth20ServiceImpl.getRequestToken(OAuth20ServiceImpl.java:45)

Я знаю, что там написано, что я могу использовать getAuthorizationUrl ... Но мне нужно передать запрос Token ...

Не могли бы вы мне помочь?

Было бы полезно любой пример с Scribe и Facebook

Спасибо!

PS: Та же проблема с Windows Live!= (

РЕДАКТИРОВАТЬ:

Я искал исходный код библиотеки Scribe, и я нашел что-то

https://github.com/fernandezpablo85/scribe-java/blob/master/src/main/java/org/scribe/oauth/OAuth20ServiceImpl.java

Здесь мы можемвижу, что я могу вызвать getAuthorizationUrl (...) с нулевым параметром, потому что он не использует его .... Но я думаю, что теперь проблема в том, что конфиг не заполнен ...

здеськак я инициализирую сервис facebook:

new ServiceBuilder()
    .provider(FacebookApi.class)
    .apiKey(....)
    .apiSecret(....)
    .scope("email,offline_access")
    .callback("oauth://facebook")
    .build();

Это правильно?

Спасибо!

Ответы [ 2 ]

7 голосов
/ 20 декабря 2011

Вы все неправильно поняли.Протокол OAuth 2 никогда не возвращает токен запроса, такой как OAuth 1.

Oauth 1 выполняет запрос HTTP POST и возвращает токен неавторизованного запроса.Затем вам придется авторизовать свой неавторизованный токен для получения авторизованного токена (это HTTP-вызов 2).

Oauth 2, с другой стороны, не имеет потока токенов запроса, вам нужно будет выполнитьHTTP GET для токена авторизации (только 1 HTTP-вызов).Поэтому Scribe говорит, что вам нужно позвонить getAuthorizedUrl.

. См. Этот пример Facebook , чтобы узнать, как получить авторизованный токен с помощью OAuth 2.

7 голосов
/ 20 декабря 2011
private static final Token EMPTY_TOKEN = null;

OAuthService service = new ServiceBuilder()
                           .provider(FacebookApi.class)
                            .apiKey(apiKey)
                            .apiSecret(apiSecret)
                             .callback("http://www.example.com/oauth_callback/")
                              .build();
 String authorizationUrl = service.getAuthorizationUrl(EMPTY_TOKEN);

Все, что вам теперь нужно - перенаправить пользователя на этот URL и позволить ему самостоятельно проверить его, чтобы получить код от facebok.

Существует множество примеров с очень хорошей документацией почти для всех основных присяг. система

здесь для Facebook

FacebookExample

Для всех основных провайдеров Каталог примеров писцов

Редактировать

После просмотра обсуждения я предлагаю получить полное представление об Oauth1 и Oauth2.

...