2013-03-04 40 views
7

Tôi đã tìm các ví dụ xác thực bằng cách sử dụng google oauth java gói: https://code.google.com/p/google-oauth-java-client/Ví dụ cho OAuth1 sử dụng google-api-java-oauth

tôi đã quản lý để tìm ví dụ để xác thực OAuth2 sử dụng gói này, nhưng tôi không thể tìm thấy bất kỳ cho oauth1. Tài liệu cung cấp một phác thảo ngắn gọn về "dòng ứng dụng điển hình", nhưng nó loại bỏ tất cả các chi tiết.

Có ai có bất kỳ đề xuất nào về nơi tôi có thể tìm thấy ví dụ về xác thực oauth1 bằng gói điều kiện không?

Trả lời

9

Dựa trên google-oauth-java-client JavaDocRFC 5849 ví dụ nên xem xét như sau:

OAuthHmacSigner signer = new OAuthHmacSigner(); 
    // Get Temporary Token 
    OAuthGetTemporaryToken getTemporaryToken = new OAuthGetTemporaryToken(TOKEN_SERVER_URL); 
    signer.clientSharedSecret = OAuth2ClientCredentials.CONSUMER_SECRET; 
    getTemporaryToken.signer = signer; 
    getTemporaryToken.consumerKey = OAuth2ClientCredentials.CONSUMER_KEY; 
    getTemporaryToken.transport = new NetHttpTransport(); 
    OAuthCredentialsResponse temporaryTokenResponse = getTemporaryToken.execute(); 

    // Build Authenticate URL 
    OAuthAuthorizeTemporaryTokenUrl accessTempToken = new OAuthAuthorizeTemporaryTokenUrl(AUTHENTICATE_URL); 
    accessTempToken.temporaryToken = temporaryTokenResponse.token; 
    String authUrl = accessTempToken.build(); 

    // Redirect to Authenticate URL in order to get Verifier Code 
    System.out.println(authUrl); 

    // Get Access Token using Temporary token and Verifier Code 
    OAuthGetAccessToken getAccessToken = new OAuthGetAccessToken(ACCESS_TOKEN_URL); 
    getAccessToken.signer = signer; 
    getAccessToken.temporaryToken=temporaryTokenResponse.token; 
    getAccessToken.transport = new NetHttpTransport(); 
    getAccessToken.verifier= "VERIFIER_CODE"; 
    getAccessToken.consumerKey = OAuth2ClientCredentials.CONSUMER_KEY; 
    OAuthCredentialsResponse accessTokenResponse = getAccessToken.execute(); 

    // Build OAuthParameters in order to use them while accessing the resource 
    OAuthParameters oauthParameters = new OAuthParameters(); 
    signer.tokenSharedSecret = accessTokenResponse.tokenSecret; 
    oauthParameters.signer = signer; 
    oauthParameters.consumerKey = OAuth2ClientCredentials.CONSUMER_KEY; 
    oauthParameters.token = accessTokenResponse.token; 
    oauthParameters.verifier = "VERIFIER_CODE"; 

    // Use OAuthParameters to access the desired Resource URL 
    HttpRequestFactory requestFactory = new NetHttpTransport().createRequestFactory(oauthParameters); 
    GenericUrl genericUrl = new GenericUrl("RESOURCE_URL"); 
    HttpResponse response = requestFactory.buildGetRequest(genericUrl).execute(); 
    System.out.println(response.parseAsString()); 

Hope this helps.

1

Ví dụ trên cực kỳ hữu ích.

Lưu ý về việc sử dụng lib này với các triển khai oAuth 1.0 không chuẩn. Tôi đã sử dụng số Goodreads oAuth API và dường như là những gì mà oAuth Bible gọi là "triển khai không đúng OAuth 1.0a 3 chân", có nghĩa là nó không gửi lại mã xác minh sau khi chuyển hướng người dùng được ủy quyền trở lại URL gọi lại của bạn. Trong trường hợp này, bạn sẽ cần phải loại bỏ bất kỳ dòng đề cập đến VERIFIER_CODE ở trên và thêm:

signer.tokenSharedSecret = temporaryTokenResponse.tokenSecret; 

trước dòng:

OAuthCredentialsResponse accessTokenResponse = getAccessToken.execute(); 

Đã cho tôi một thời gian để tìm ra, vì vậy hy vọng sẽ giúp người khác.

Các vấn đề liên quan