Google Federated Login (OpenID+OAuth) para aplicativos hospedados - Alterando os pontos finais?

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

Pergunta

Estou tentando integrar a conta do Google Federated com uma conta de aplicativos Premier, mas estou tendo alguns problemas.

Quando eu envio o pedido para: https://www.google.com/accounts/o8/ud Com todos os parâmetros (veja abaixo), eu retiro ambos um request_token e lista de atributos solicitados por Attribute Exchange. Isso é perfeito, pois precisamos do email via atributo Exhange (AX) para armazenar o usuário em nosso banco de dados de aplicativos, e precisamos do token da solicitação para o futuro API requests to scopes (ou seja: calendário, contatos, etc).

No entanto, usando esse URL (aqui referido como o endpoint) não mantém o usuário assinado em seus aplicativos hospedados (gmail, calendário, et al), o que é um problema.

Alterando o endpoint para https://www.google.com/a/thedomain.com/o8/ud?be=o8 muda tudo. Estou conectado automaticamente a outros aplicativos do Google (Gmail etc). No entanto, usando esse endpoint, eu só recebo o token de solicitação ou os atributos via AX. Obviamente, isso não é particularmente híbrido. É muito um ou outro.

Exemplo de solicitação para o terminal 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 foi definido anteriormente com a solicitação inicial do OpenID)

Estou lutando há dias tentando fazer essa abordagem hybird funcionando, lutando contra as mensagens de erro mais opacas (This page is invalid ... obrigado google) e falta de documentação consistente. Eu já arrastei cada amostra de código que puder para chegar a esse ponto. Qualquer ajuda seria apreciada ...

Foi útil?

Solução

Para o registro, a posteridade e qualquer outra pessoa que possa vir, depois disso, documentarei a resposta (ridícula).

Por fim, o problema estava ligando:

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

Você pode identificá -lo? Sim, foi a inclusão explícita do ponto de interrogação que causou o problema. Duas cordas de consulta nunca existiram ao mesmo tempo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top