Google Federated Accesso (OpenID + Oauth) per applicazioni in hosting - cambiando i punti finali?

StackOverflow https://stackoverflow.com/questions/1543123

Domanda

Sto cercando di integrare il Google Federated il login in un premier rappresentano le applicazioni, ma sto avendo qualche problema.

Quando invio la richiesta a: https://www.google.com/accounts/o8/ud con tutti i parametri (vedi sotto), torno sia un request_token e la lista degli attributi richiesti dalla Attribute Exchange. Questo è perfetto, come abbiamo bisogno l'e-mail tramite l'attributo exhange (AX) per memorizzare l'utente nel nostro database dell'applicazione, e abbiamo bisogno il token di richiesta per il futuro API requests to scopes. (Es: calendario, contatti, ecc)

Tuttavia, utilizzando l'URL (di seguito denominato il endpoint) non mantenere l'utente l'accesso a loro applicazioni in hosting (Gmail, Calendar, et al ), che è un problema.

La modifica della endpoint per https://www.google.com/a/thedomain.com/o8/ud?be=o8 cambia tutto. Sto automagicamente firmato per altre applicazioni Google (Gmail, ecc). Tuttavia, utilizzando tale punto finale, ho solo la richiesta di token o gli attributi tramite AX. Ovviamente quello non è particolarmente ibrida. Il suo moltissimo l'uno o l'altro.

richiesta Esempio al https://www.google.com/accounts/o8/ud punto finale

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 è precedentemente impostato con successo dalla richiesta iniziale OpenID)

Ho lottato per giorni cercando di ottenere questo approccio Hybird di lavoro, combattere i messaggi più opache di errore (This page is invalid ... grazie di Google) e la mancanza di documentazione coerente. Ho spulciato ogni esempio di codice che posso per arrivare a questo punto. Qualsiasi aiuto sarebbe apprezzato ...

È stato utile?

Soluzione

Per la cronaca, i posteri, e chiunque altro possa venire a pezzi di questo, io documentare la risposta (ridicola).

In definitiva, il problema stava chiamando:

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

Si può macchiarlo? Sì, è stato l'esplicita inclusione del punto interrogativo che ha causato il problema. Due stringhe di query non esistono in una sola volta.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top