2013-05-30 5 views
0

:잘못된 grant_type 매개 변수 또는 매개 변수는 스크라이브 라이브러리 상자에서 OAuth2의 API에 빠진 나는 간단한 젠킨스 박스와 통합 된 플러그,하지만 난 항상이 오류를 얻을 쓰기 위해 노력하고있어

=== Box's OAuth Workflow === 

Fetching the Authorization URL... 
Got the Authorization URL! 
Now go and authorize Scribe here: 
https://www.box.com/api/oauth2/authorize?client_id=abc123&redirect_uri=http%3A%2F%2Flocalhost%3A8080%2Fjenkins%2Fconfigure&response_type=code&state=authenticated 
And paste the authorization code here 
>>xyz9876543 

Trading the Request Token for an Access Token... 
Exception in thread "main" org.scribe.exceptions.OAuthException: Cannot extract an acces token. Response was: {"error":"invalid_request","error_description":"Invalid grant_type parameter or parameter missing"} 
    at org.scribe.extractors.JsonTokenExtractor.extract(JsonTokenExtractor.java:23) 
    at org.scribe.oauth.OAuth20ServiceImpl.getAccessToken(OAuth20ServiceImpl.java:37) 
    at com.example.box.oauth2.Box2.main(Box2.java:40) 

BOX2 클래스 () 테스트 :

public class Box2 { 
    private static final Token EMPTY_TOKEN = null; 

    public static void main(String[] args) { 
     // Replace these with your own api key and secret 
     String apiKey = "abc123"; 
     String apiSecret = "xyz987"; 
     OAuthService service = new ServiceBuilder().provider(BoxApi.class) 
       .apiKey(apiKey).apiSecret(apiSecret) 
       .callback("http://localhost:8080/jenkins/configure") 
       .build(); 
     Scanner in = new Scanner(System.in); 

     System.out.println("=== Box's OAuth Workflow ==="); 
     System.out.println(); 

     // Obtain the Authorization URL 
     System.out.println("Fetching the Authorization URL..."); 
     String authorizationUrl = service.getAuthorizationUrl(EMPTY_TOKEN); 
     System.out.println("Got the Authorization URL!"); 
     System.out.println("Now go and authorize Scribe here:"); 
     System.out.println(authorizationUrl); 
     System.out.println("And paste the authorization code here"); 
     System.out.print(">>"); 
     Verifier verifier = new Verifier(in.nextLine()); 
     System.out.println(); 

     // Trade the Request Token and Verfier for the Access Token 
     System.out.println("Trading the Request Token for an Access Token..."); 
     Token accessToken = service.getAccessToken(EMPTY_TOKEN, verifier); 
     System.out.println("Got the Access Token!"); 
     System.out.println("(if your curious it looks like this: " 
       + accessToken + ")"); 
     System.out.println(); 


    } 
} 

BoxApi 클래스 :

public class BoxApi extends DefaultApi20 { 
    private static final String AUTHORIZATION_URL = 
      "https://www.box.com/api/oauth2/authorize?client_id=%s&redirect_uri=%s&response_type=code&state=authenticated"; 

    @Override 
    public String getAccessTokenEndpoint() { 
     return "https://www.box.com/api/oauth2/token?grant_type=authorization_code";   
    } 


    @Override 
    public String getAuthorizationUrl(OAuthConfig config) { 
     return String.format(AUTHORIZATION_URL, config.getApiKey(), 
       OAuthEncoder.encode(config.getCallback())); 
    } 

    @Override 
    public Verb getAccessTokenVerb(){ 
     return Verb.POST; 
    } 

    @Override 
    public AccessTokenExtractor getAccessTokenExtractor() { 
     return new JsonTokenExtractor(); 
    } 
} 

나는 제외하고이를 얼마나 잘 모르겠어요 이온. Box API를 아는 사람이라면 무엇인가 잘못했는지 알 수 있습니까?

+0

해결하셨습니까? 'grant_type = authorization_code'가 전달 되더라도 동일한 문제가 있습니다. – Roberto

+0

John Hoerr 님의 답변 : http://stackoverflow.com/questions/15437525/box-api-oauth2-acces-token-request-error-invalid-grant-type-parameter-or-parame – entyer

답변

1

액세스 토큰에 대한 요청은 요청 본문에 포함 된 매개 변수와 함께 POST 요청 형식이어야합니다. 매개 변수와 함께 URL 매개 변수로 GET을 보내는 것처럼 보입니다.

+0

모든 요청은 게시물이어야합니다. ? – xbeta

+0

POST 동사가 추가되었지만 여전히 실패 함 – xbeta