Search code examples
grailsoauth-2.0scribe

scribe oauth linkedin creat token


I am trying to use the scribe oAuth plugin (in a grails environment). I am able to get the user to authorize my app and authenticate. I can then get the xml response. my question, though, is how do I re-query a users profile without having to have them re-authorize my app. Once they authorize it the first time, I capture their Token and Secret key. So, shouldn't I be able to re-query the profile (as long as they do not revoke their authorization.)? I was able to do this with the older version of the plugin. The problem is with creating a new token. I don't see a way to create the Authorization token without the Verifier and Request Token (which wont exist because my code is executing the query on their behalf, with their permission.)

If I try to create the token like this:

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

I get an initialization error.

I can't create it like this, because I dont have the Request token and verifier:

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

And If i dont have the access token object, I am unable to sign my request. The full code looks like this (assuming their is a request token and verifier)

  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();   

Thanks for your help jason


Solution

  • well, after some time, I got this to work:

      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();           
    
    }