2015-12-16 5 views
0

Это код из учебника Getting Started, и я только пытаюсь его использовать, ничего больше не работает.LinkedIn Oauth2 выбрасывает исключение, используя Scribejava

public class Launch { 

private static final String url = 
    "http://api.linkedin.com/v1/people/~/connections:(id,first-name,last-name,email-address,picture-url)"; 
private static final String url2 = 
     "http://api.linkedin.com/v1/people/~/connections:(id,first-name,last-name)"; 

public Launch() { 
    OAuthService service = new ServiceBuilder() 
      .provider(LinkedInApi.class) 
      .apiKey("xxxx") 
      .apiSecret("xxxx") 
      .build(); 
    Token requestToken = service.getRequestToken(); 

    String authUrl = service.getAuthorizationUrl(requestToken); 
    Verifier v = new Verifier("verifier you got from the user"); 
    Token accessToken = service.getAccessToken(requestToken, v); // the requestToken you had from step 2 
    OAuthRequest request = new OAuthRequest(Verb.GET, url2); 
    service.signRequest(accessToken, request); // the access token from step 4 
    Response response = request.send(); 
    System.out.println(response.getBody()); 
} 

В моей контроллер у меня есть:

@View 
public Response.Content index(){ 
Launch launch = new Launch(); 
return index.ok();} 

и когда я пытаюсь запустить его, он дает мне эту ошибку:

org.scribe.exceptions.OAuthException: Response body is incorrect. Can't extract token and secret from this: 'oauth_problem=permission_unknown'

ответ

0

Найдено решение: изменил код добавить Scanner in = new Scanner(System.in); после объявления ServiceBuilder, чтобы использовать его в Verifier verifier = new Verifier(in.nextLine());

А также, поставить вручную URL-адрес, найденный в терминале, который является результатом System.out.println(service.getAuthorizationUrl(requestToken));

Это временный URL, но единственный способ это работает до сих пор.

Смежные вопросы