2013-07-31 2 views
0

J'essaie de faire la demande suivante dans Google Apps Script. Cette requête renvoie le jeton à utiliser pour accéder à l'API.Effectuer une demande https POST pour le jeton

POST https://datamarket.accesscontrol.windows.net/v2/OAuth2-13 
Content-Type: application/x-www-form-urlencoded 

client_id=USERS-CLIENT-ID&client_secret=USERS-SECRET-KEY&grant_type=client_credentials&scope=http%3a%2f%2fapi.microsofttranslator.com%2f 

Comment faire la demande ci-dessus dans Google Apps Script. Je lis à ce sujet mais je n'arrive pas à trouver une solution. J'ai essayé quelque chose comme ci-dessous, mais cela n'a pas fonctionné. Quelles méthodes dois-je utiliser?

var oAuthConfig = UrlFetchApp.addOAuthService("bearer"); 
oAuthConfig.setConsumerKey("USERS-CLIENT-ID"); 
//some code omitted 
//I couldn't figure out where to put grant_type and scope 
var result = UrlFetchApp.fetch("http://api.microsofttranslator.com/v2/Http.svc/Translate?text=hello&from=en&to=ja",options); //gave oAuth error 

Répondre

1

addOAuthService est réellement utilisé uniquement pour les services OAuth 1.

Pour OAuth 2, vous devez effectuer manuellement l'appel POST. Voici un exemple

var parameters = { 
    method : 'post', 
    payload : 'client_id='+CLIENT_ID+'&client_secret='+CLIENT_SECRET+'&grant_type=authorization_code&redirect_uri='+REDIRECT_URL+'&code=' + code 
    }; 

    var response = UrlFetchApp.fetch(TOKEN_URL,parameters).getContentText(); 

Vous pouvez voir un exemple plus complètement formé ici - https://github.com/entaq/GoogleAppsScript/blob/master/IO2013/YouTubeAnalytics/oauth2.gs#L22

+0

Merci beaucoup cela fonctionne maintenant. –