Hi developers!

I've recently tried to establish oauth interconnection between my
server and my robot. First it did not work at all, and  i tried to
find errors in my server's oauth implementation, but finally i had to
change OAuthServiceImpl.java from Wave API library. Please, take a
look, may be these changes are really necessary:

I changed:

1.private String getAndStoreRequestToken() {
    // Get the request token.
    try {
      oauthClient.getRequestToken(accessor);
    } catch (IOException e) {
      LOG.severe("Could not reach service provider to get request
token: " + e);
    } catch (OAuthException e) {
      LOG.severe("Unable to fetch request token. Authentication error:
" + e);
    } catch (URISyntaxException e) {
      LOG.severe("Unable to fetch request token. Invalid url: " + e);
    }

    // Store request token in Datastore via a tokenData object.
    String requestToken = accessor.requestToken;
    OAuthUser u=new OAuthUser(userRecordKey, requestToken);
    u.setTokenSecret(accessor.tokenSecret);
    storeUserProfile(u);

    return accessor.requestToken;
  }
Here i added saving of token secret
u.setTokenSecret(accessor.tokenSecret);

2. private String exchangeTokens(OAuthUser userProfile) {
    // Re-initialize an accessor with the request token and secret
token.
    // Request token needs to be in access token field for exchange to
work.
    accessor.accessToken = userProfile.getRequestToken();
    accessor.tokenSecret = userProfile.getTokenSecret();
    // Perform the exchange.
    LOG.warning(accessor.tokenSecret);
    String accessToken = null;
    String tokenSecret = null;
    try {
        OAuthMessage message =
          oauthClient.invoke(accessor, GET,
accessor.consumer.serviceProvider.accessTokenURL, null);
      accessToken = message.getToken();
      tokenSecret = message.getParameter(OAuth.OAUTH_TOKEN_SECRET);
    } catch (IOException e) {
      LOG.warning("Failed to retrieve access token,cause: " +
e.getMessage());
    } catch (OAuthException e) {
      LOG.warning("Failed to retrieve access token: " +
e.getMessage());
    } catch (URISyntaxException e) {
      throw new RuntimeException(e);
    }

    if (accessToken != null) {
      // Store the access token in the user profile object and put
profile back
      // in the datastore.
      userProfile.setAccessToken(accessToken);
      userProfile.setTokenSecret(tokenSecret);
      storeUserProfile(userProfile);
    }
    return accessToken;
  }

Here i added setting of token secret in accessor accessor.tokenSecret
= userProfile.getTokenSecret();

After these modifications all troubles disappeared and OAuth worked
ok.

Thanks, Evgeniy

-- 
You received this message because you are subscribed to the Google Groups 
"Google Wave API" group.
To post to this group, send email to google-wave-...@googlegroups.com.
To unsubscribe from this group, send email to 
google-wave-api+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-wave-api?hl=en.

Reply via email to