Я пытаюсь интегрировать федеративный вход Google с учетной записью главного приложения, но у меня возникли некоторые проблемы.
Когда я отправляю запрос по адресу: https://www.google.com/accounts/o8/ud
со всеми параметрами (см. Ниже), я получаю как request_token
, так и список атрибутов, запрошенных Attribute Exchange
. Это прекрасно, так как нам требуется электронная почта через атрибут exhange (AX) для хранения пользователя в нашей базе данных приложения, и нам нужен токен запроса на будущее API requests to scopes
(т.е. календарь, контакты и т. Д.).
Однако использование этого URL (в данном документе именуемого endpoint
) не позволяет пользователю войти в свои размещенные приложения (gmail, calendar, и др. ), что является проблемой.
Изменение конечной точки на https://www.google.com/a/thedomain.com/o8/ud?be=o8
меняет все. Я автоматически вошел в другие приложения Google (Gmail и т. Д.). Однако, используя эту конечную точку, я получаю только маркер запроса или атрибуты через AX. Очевидно это не особенно Гибрид. Его очень много, один или другой.
Пример запроса к конечной точке 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 ранее был успешно установлен начальным запросом openid)
Я несколько дней боролся за то, чтобы этот подход Hybird работал, боролся с самыми непрозрачными сообщениями об ошибках (This page is invalid
... спасибо Google) и отсутствием согласованной документации. Я просмотрел все примеры кода, которые смог, чтобы добраться до этой точки. Любая помощь будет оценена ...