2012-06-13 11 views
6

Ich interagiere mit einem benutzerdefinierten APEX-Dienst, der offensichtlich eine OAuth-Authentifizierung erfordert. Ich kann meine Bewerbung problemlos authentifizieren und autorisieren. Alles funktioniert gut.Nein refresh_token in SalesForce OAuth Antwort

Das Zugriffstoken, das ich erhalte, läuft jedoch ab.

Natürlich kann ich es aktualisieren, indem ich ein refresh_token sende. Klingt gut.

Das Problem ist, dass ich ein refresh_token in einer Antwort von SalesForce nicht empfange.

Ich sende Anfragen an [instance]. Salesforce.com/services/oauth2/token, ich habe auch versucht, login.salesforce.com/services/oauth2/token zu verwenden, aber ich finde 'refresh_token' in der Antwort nicht . Es gibt alles davon abgesehen! ..

+0

welche oauth flow verwenden Sie? Was ist dein Callback-URI? – superfell

+0

@superfell Alles stimmte, abgesehen vom Umfang. Siehe meine Antwort unten. Danke trotzdem :)! –

Antwort

4

Ich habe das Problem dank meiner wunderbaren Kollegin gelöst.

Ich hätte 'refresh_token' zum Bereich hinzufügen müssen, wenn ich einen Auth-Code abrufen würde.

+3

Tatsächlich werden Refresh_Token nicht (oder nicht mehr) ausgegeben, es sei denn, Sie erstellen eine mobile App oder eine In-SalesForce-App. Siehe http://wiki.developerforce.com/page/Digging_Deeper_into_OAuth_2.0_on_Force.com und suche nach "Bitte beachte, dass refresh_token nur gesendet wird, wenn einer der folgenden Fälle zutrifft". Ich fand das nach 4 Stunden nach dem Versuch herauszufinden, warum es mir keinen gab. :) Ich bin aber froh darüber, dass es falsch ist. – Anthony

+1

Hast du das jemals zur Arbeit gebracht? Ich erhalte trotz der Einstellungen für den Bereich kein Aktualisierungs-Token. –

+0

Außerdem ist 'refresh_token' kein Bereich, aber 'offline_access' ist .. –

9

Aktivieren Sie den Abschnitt "Ausgewählte OAuth-Bereiche", der aktiviert werden muss, um "Anfragen jederzeit in Ihrem Namen auszuführen", um das Aktualisierungstoken zu erhalten. create ==> Apps ==> API (OAuth-Einstellungen aktivieren) ==> Ausgewählte OAuth-Bereiche.

+2

Ich bin mir nicht sicher, warum "Full Access (Full)" Scope ist nicht genug ... aber es ist nicht. Sie müssen auch das obige tun. Vielen Dank. – barclay

+1

Dies sollte die akzeptierte Antwort sein. – Detached