2014-01-28 2 views
2

Я пытаюсь использовать писец для авторизации с помощью facebook и twitter. Нет проблем с facebook. Но когда я пытаюсьscribe + twitter> Невозможно получить String из нулевого объекта

requestToken = service.getRequestToken()

для твиттере я

Невозможно получить строку из пустого объекта

> ru.myx.ae3.exec.ExecErrorDefault 
    > Cannot get String from a null object 
    > java.lang.IllegalArgumentException 
     : org.scribe.utils.Preconditions.check(Preconditions.java:84) 
     : org.scribe.utils.Preconditions.checkNotNull(Preconditions.java:31) 
     : org.scribe.utils.StreamUtils.getStreamContents(StreamUtils.java:22) 
     : org.scribe.model.Response.parseBodyContents(Response.java:43) 
     : org.scribe.model.Response.getBody(Response.java:69) 
     : org.scribe.oauth.OAuth10aServiceImpl.getRequestToken(OAuth10aServiceImpl.java:60) 
     : org.scribe.oauth.OAuth10aServiceImpl.getRequestToken(OAuth10aServiceImpl.java:40) 
     : org.scribe.oauth.OAuth10aServiceImpl.getRequestToken(OAuth10aServiceImpl.java:45) 
     : sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     : sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
     : sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
     : java.lang.reflect.Method.invoke(Method.java:606) 

Может кто-нибудь помочь мне исправить это?

+0

Вопрос закрыт. Поставщик услуг (TwitterApi.class) поставщику (TwitterApi.Authenticate.class – user3246436

ответ

0

я столкнулся с этой проблемой тоже ...

То, что я сделал, я создал пользовательский TwitterApi как сильфон. По какой-то причине twitter oauth прекратил поддержку http и поддерживает только ssl. Смотри ниже.

import org.scribe.builder.api.DefaultApi10a; 
import org.scribe.model.Token; 


public class CustomTwitterApi extends DefaultApi10a { 

private static final String AUTHORIZATION_URL = "https://api.twitter.com/oauth/authorize?oauth_token=%s"; 

public String getRequestTokenEndpoint() { 
    return "https://api.twitter.com/oauth/request_token"; 
} 

public String getAccessTokenEndpoint() { 
    return "https://api.twitter.com/oauth/access_token"; 
} 

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

К счастью, Scribe имеет поддержку SSL, вам просто нужно использовать правильный класс TwitterAPI внутри строителя (тот, предназначенный для SSL соединений:

final OAuthService service = new ServiceBuilder() 
.provider(**TwitterApi.SSL.class**) 
.apiKey(...) 
.apiSecret(...) 
.callback(...) 
.build(); 

работал для меня как шарм :)