Frage

Ich versuche, die Google föderierte Anmeldung mit einem führenden Apps-Konto zu integrieren, aber ich habe einige Probleme.

Als ich die Anfrage zu senden: https://www.google.com/accounts/o8/ud mit allen Parametern (siehe unten), habe ich sowohl eine request_token und die Liste der Attribute zurück verlangte von Attribute Exchange. Dies ist ideal, da wir die E-Mail über Attribut exhange (AX) müssen die Benutzer in unserer Anwendungsdatenbank zu speichern, und wir brauchen die Anforderung für zukünftige API requests to scopes Token. (ZB: Kalender, Kontakte, etc.)

Allerdings verwendet die URL (hier als endpoint bezeichnet) hält die Benutzer nicht angemeldet, um ihre gehosteten Anwendungen (Google Mail, Kalender et al ), was ein Problem ist.

Ändern der Endpunkt https://www.google.com/a/thedomain.com/o8/ud?be=o8 ändert alles. Ich bin automagically zu anderen Google Apps angemeldet (gmail etc.). Jedoch, dass Endpunkt verwenden, erhalte ich nur die Anforderungs-Token oder die Attribute über AX. Offensichtlich das ist nicht besonders Hybrid. Es ist sehr viel eine oder das andere.

Beispiel Anforderung an den Endpunkt https://www.google.com/accounts/o8/ud

parameters = {
    'openid.ns': 'http://specs.openid.net/auth/2.0',
    'openid.claimed_id': 'http://specs.openid.net/auth/2.0/identifier_select',
    'openid.identity': 'http://specs.openid.net/auth/2.0/identifier_select',
    'openid.return_to':'http://our.domain.com/accounts/callback/',
    'openid.realm': 'http://our.domain.com/',
    'openid.assoc_handle': assoc_handle,
    'openid.mode': 'checkid_setup',

    'openid.ns.ext2': 'http://specs.openid.net/extensions/oauth/1.0',
    'openid.ext2.consumer': 'our.domain.com',
    'openid.ext2.scope': 'https://mail.google.com/mail/feed/atom',

    'openid.ns.ax':'http://openid.net/srv/ax/1.0',
    'openid.ax.mode':'fetch_request',
    'openid.ax.required':'firstname,lastname,email',
    'openid.ax.type.firstname':'http://axschema.org/namePerson/first',
    'openid.ax.type.lastname':'http://axschema.org/namePerson/last',
    'openid.ax.type.email':'http://axschema.org/contact/email',     
}
return HttpResponseRedirect(end_point + '?' + urllib.urlencode(parameters))

(assoc_handle zuvor erfolgreich von der openid anfänglichen Anforderung gesetzt ist)

Ich habe seit Tagen zu kämpfen versuchen, dieses Hybird Ansatz zum Laufen zu bringen, im Kampf gegen die opakste Fehlermeldungen (This page is invalid ... dank Google) und das Fehlen einer konsistenten Dokumentation. Ich habe jedes Codebeispiel surften ich kann, um diesen Punkt zu gelangen. Jede mögliche Hilfe würde geschätzt ...

War es hilfreich?

Lösung

Für die Aufzeichnung der Nachwelt, und alle anderen, die auseinander davon kommen könnte, werde ich die (lächerlich) Antwort dokumentieren.

Schließlich wurde das Problem Aufruf:

return HttpResponseRedirect(
    'https://www.google.com/a/thedomain.com/o8/ud?be=o8'
    + '?'
    + urllib.urlencode(parameters)
)

Können Sie es vor Ort? Ja, es war die explizite Einbeziehung der Fragezeichen, das das Problem verursacht hat. Zwei Abfrage-Strings existieren nie auf einmal.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top