我尝试使用scribe与facebook和twitter进行授权。 Facebook没有问题。但是当我尝试
时requestToken = service.getRequestToken()
对于twitter我得到了
无法从空对象获取String
> 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 :(得分:4)
幸运的是,Scribe具有SSL支持,您只需要在构建器内部使用正确的TwitterAPI类(用于SSL连接的类:
final OAuthService service = new ServiceBuilder()
.provider(**TwitterApi.SSL.class**)
.apiKey(...)
.apiSecret(...)
.callback(...)
.build();
像魅力一样为我工作:)
答案 1 :(得分:0)
我也遇到过这个问题......
我做的是我创建了一个像bellow一样的自定义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());
}
}