Domanda

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

È stato utile?

Soluzione

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

}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top