2017-06-15 1 views
1

Ich arbeite an Google Tabellen < -> Salesforce-Integration und Entwicklung in Salesforce-Programmiersprache - Apex auf Force.com-Plattform.Zugriff auf Google Tabellen-API über Dienstkonto-Schlüssel

Derzeit versuche ich mich mit Google Tabellen API zu verbinden. Ich verwende den Dienstkontoschlüssel, sodass Salesforce die Daten aus Google Tabellen abrufen kann, ohne dass jedes Mal eine manuelle Autorisierung erforderlich ist, wenn eine Abfrage gesendet wird.

Ich bin an dem Punkt, wo ich den Service Account Key eingerichtet und ich bin erfolgreich senden eine Anfrage an sie, um den Access_code zu erhalten.

Dann bin ich versucht, die API, mit der folgenden Klasse abzufragen:

 /****** API CALLOUT *******/ 
     public static HttpResponse googleSheetsCallout(){ 
    //the below line provides a string containing access token to google 
      string accessCode = getAccessToken(); 
//I found this endpoint structure online, this may be why my script 
//isn't working. However, I am struggling to find the alternative.   
string endpoint = 'https://sheets.googleapis.com/v4/spreadsheets/params=[SPREADSHEET ID GOES HERE]/values/[RANGE GOES HERE]?access_token='; 
      httpRequest req = new httpRequest(); 
      req.setEndpoint(endpoint+accessCode); 
      req.setMethod('GET'); 
      req.setTimeout(120000); 
      httpResponse res = new http().send(req); 
      System.debug ('res is ' +res); 
      return res; 

     } 

Wenn ich die Funktion dieses ausgeführt ist, was die Log-Returns:

|CALLOUT_RESPONSE|[71]|System.HttpResponse[Status=Forbidden, StatusCode=403] 
|USER_DEBUG|[72]|DEBUG|res is System.HttpResponse[Status=Forbidden, StatusCode=403] 

Ich ermöglichte Zugang Google Sheets in Das Menü der Google Developer-Konsole. Interessant ist, dass Google bei der Anzeige an der Konsole bemerkt, dass API-Anfragen gesendet werden (diese erscheinen im Aktivitätsdiagramm).

Antwort

1

Ich löste es, und das Problem war nicht der Code selbst.

Das Problem war mein Blatt zu teilen. Um den Lese-/Bearbeitungszugriff auf Ihr Arbeitsblatt über das Dienstkonto zu ermöglichen, muss es mit der E-Mail-Adresse der Dienstkonto-ID geteilt werden, genauso wie es mit anderen Benutzern geteilt wird. Wenn dies nicht gemacht wird, erzeugt das Skript 403 Fehler.

Verwandte Themen