2013-12-19 1 views
6

Okay, so bauen wir eine iPhone App eine Sharepoint 2013-Website zu treffen, die 365. in Office gehostet Wenn ich das # in C waren Gebäude, die ich Wenn ich bereits fertig bin, würde ich den Luxus haben, TokenHelper.cs zu benutzen, um mich am meisten dorthin zu bringen. Soweit ich weiß, gibt es leider noch keinen TokenHelper für Objective-C.Sharepoint 365 ACS OAuth in Objective-C: Reich Fehler - benötigte Hilfe

Also hier ist der Deal, wir können bereits erfolgreich die OAuth Authentifizierung/Autorisierung Seite kommen und wir erhalten erfolgreich einen Autorisierungscode zurück.

Nach diesem Punkt waren wir ein wenig ratlos, weil wir wussten, dass wir die Realm-ID im POST verpassten, um unsere Access- und Refresh-Tokens zu erhalten. Ich habe endlich herausgefunden, wie TokenHelper das macht und wir haben das kopiert. (Dies war ein zusätzlicher Aufruf von /_vti_bin/client.svc, von dem Sie erwarten, dass Sie eine 401 erhalten, damit Sie die Bereichs-ID aus der Kopfzeile ziehen können)

Wir haben jetzt eine Realm-ID, die ich habe Lesen Sie in der Dokumentation und TokenHelper und in Fiddler gesehen, muss auf die folgenden zwei Arten verwendet werden: innerhalb der URL-Konstruktion für den POST sowie für den Ressourcenwert in der Kopfzeile für diesen POST.

So sieht die POST-URL wie folgt aus:

accounts.accesscontrol.windows.net/{realm id}/Token/oauth/2

Unser Ressourcenwert sieht wie folgt aus:

resource = 00000003-0000-0ff1-ce00-000000000000% 2f {url Bereich} {40% Realm ID}

Dies verbindet zumindest gut und akzeptiert unseren POST. Leider erhalten wir die folgende Nachricht zurück:

ACS50012: Authentifizierung fehlgeschlagen. ACS90011: Der Bereich '' ist kein konfigurierter Bereich des aktuellen Dienstnamespaces.

Diese Nachricht lässt mich denken, dass es ein Konfigurationsproblem gibt, aber ich kann mir wirklich nicht sicher sein.

Hat jemand versucht sonst Durchführung OAuth gegen eine 365-Website noch in Objective-C und hatte Erfolg?

Ich kann auch Code eingeben, aber ich habe versucht, davon zunächst zu scheuen.

+0

Ich hatte einige Fragen rund um den Inhalt des POST, so dass ich teilen, was ich kann - natürlich kann ich nicht das Client-ID oder Geheimnis preisgeben. [ URL: Konten.accesscontrol.windows.net/e8f0027b-39c8-49a0-8fce-bb606a118df8/tokens/OAuth/2, Header: Inhaltstyp = application/x-www-form-urlencoded, Hauptteil: grant_type = authorization_code & client_id = {Client-ID} & client_secret = {Client-Geheimnis} & redirect_uri = {uri} & Ressource = 00000003-0000-0ff1-ce00-00000000000000% 2Fthreewill.sharepoint.com% 40e8f0027b-39c8-49a0-8fce-bb606a118df8] –

+0

Hi, können Sie dieses Problem beheben? Bitte teile deine Lösung mit. –

+0

Ich habe das noch nicht gelöst, eigentlich. Ich werde versuchen, entweder diese Woche oder nächste zu überdenken. Das Microsoft Open Tech-Team hat kürzlich eine API für OAuth gegen O365 für Android veröffentlicht, also ist es offensichtlich machbar - ich werde versuchen, das für die Lösung durchzusehen. –

Antwort

5

Ich kam vor kurzem in dem gleichen Problem und habe das Gefühl, es das gleiche Problem sein können Sie sehen.

Die richtige POST-Anforderung für OAuth ist wie folgt:

POST https://accounts.accesscontrol.windows.net/<REALM_GUID>/tokens/OAuth/2 
x-www-form-urlencoded params: 
grant_type:authorization_code 
client_id:<CLIENT_ID>@<REALM_GUID> 
client_secret:<CLIENT_SECRET> 
code:<AUTH_CODE> 
redirect_uri:<REDIRECT_URI> 
resource:00000003-0000-0ff1-ce00-000000000000/<SHAREPOINT_AUTHORITY>@<REALM_GUID> 

Der große Gotcha für mich war, dass der Wert des „client_id“ das Reich-ID an den Client-ID angefügt erforderlich. Ohne den Bereich ID wird eine „ACS90011.: Das Reich‚‘ist kein konfiguriert Bereich des aktuellen Service-Namensraum“ werfen

HTH

+1

Muss als Antwort markiert werden! Dies fehlt definitiv in der MS-Dokumentation! – palig