2012-10-06 104 views
2

我正在嘗試使用scribe oAuth插件(在grails環境中)。我能夠讓用戶授權我的應用程序並進行身份驗證。然後我可以得到xml響應。我的問題是,如何重新查詢用戶配置文件,而不必讓他們重新授權我的應用程序。一旦他們第一次授權,我就捕獲他們的Token和Secret密鑰。所以,我不應該能夠重新查詢個人資料(只要他們不撤銷他們的授權)。我能夠用老版本的插件做到這一點。問題是創建一個新的令牌。我沒有看到沒有驗證者和請求令牌創建授權令牌的方法(這不會存在,因爲我的代碼在他們的許可下代表他們執行查詢)。scribe oauth linkedin創建令牌

如果我嘗試創建令牌這個:

Token accessToken = new Token() 
accessToken.secret="XXX" 
accessToken.token = "YYY" 

我得到一個初始化錯誤。

我不能這樣創建它,因爲我沒有請求令牌和驗證:

Token accessToken = service.getAccessToken(requestToken, verifier); 
accessTokenSecret = accessToken.secret 
accessTokenKey = accessToken.token 

,如果我沒有這個訪問令牌對象,我無法登錄我的要求。完整的代碼看起來是這樣的(假設他們是請求令牌和驗證)

OAuthService service=new ServiceBuilder() 
    .provider(LinkedInApi.class) 
    .apiKey(apiKey) 
    .apiSecret(apiSecret) 
    .build(); 

    Verifier v = new Verifier(ver); 

    Token accessToken = service.getAccessToken(rt, v); 
    accessTokenSecret = accessToken.secret 
    accessTokenKey = accessToken.token 


    OAuthRequest request = new OAuthRequest(Verb.GET, apiUrl); 
    service.signRequest(accessToken, request); 
    Response response = request.send(); 
    xmlString=response.getBody(); 

感謝您的幫助 傑森

+1

通過調用'service.getRequestToken'來獲取requestToken。然後,您可以將其交換給正確的url的驗證者。請閱讀OAuth文檔,您至少需要了解進行此項工作的基礎知識。 –

+0

這是我使用的文檔:http://aiten.github.com/grails-oauth-scribe/guide/index.html,但沒有看到我所問的內容。這在哪裏記錄? – jason

回答

6

好,一段時間後,我得到這個工作:

public getProfileWithTokens(getAccessToken, getAccessTokenSecret){ 

    Token newAccessToken = new Token(getAccessToken, getAccessTokenSecret); 

    String xmlString ="" 

    OAuthService service=new ServiceBuilder() 
    .provider(LinkedInApi.class) 
    .apiKey(apiKey) 
    .apiSecret(apiSecret) 
    .build(); 

    OAuthRequest request = new OAuthRequest(Verb.GET, apiUrl); 
    service.signRequest(newAccessToken, request); 
    Response response = request.send(); 
    xmlString=response.getBody();   

}