Etsy uses a three-legged approach to authentication:

1. OAuth Connector gets a request token (temporary credentials).
2. The Etsy member is then linked with the temporary credentials.
3. OAuth Connector exchanges the temporary credentials for permanent token credentials (also known as an "access token".)

The problem I'm having is with step 3. When the OAuth Connector module attempts to exchange the temporary credentials for the permanent credentials, I'm getting the following error:

Failed to fetch data from url "http://sandbox.openapi.etsy.com/v2/oauth/access_token" (HTTP response code 500 Server Error): oauth_problem=token_rejected' in modules/oauth/include/DrupalOAuthClient.inc:384

Stack trace: #0 /var/www/mqo/sites/all/modules/oauth/includes/DrupalOAuthClient.inc(250): DrupalOAuthClient->get('http://sandbox....', Array)

#1 modules/oauth/oauth_common.pages.inc(58): DrupalOAuthClient->getAccessToken(NULL, Array)

#2 [internal function]: oauth_common_page_authorized()

#5 {main} thrown in /modules/oauth/includes/DrupalOAuthClient.inc on line 384

I've noticed that the CURL request being built in DrupalOAuthClient doesn't seem to include the parameters: the token, verifier token, token secret, user credentials etc.

See also:
Etsy API overview