2012-10-06 100 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();   

}