2011-12-16 4 views
0

Я попытался использовать Google plus API для прохождения процесса OAuth2.httplib2.CertificateHostnameMismatch в Google plus API

Я получил верификатор и собираюсь обменять токен доступа, после чего произошла ошибка.

httplib2.CertificateHostnameMismatch: 

Server presented certificate that does not match host accounts.google.com: 

сервер представил сертификат, который не соответствует хост www.googleapis.com

Представленный сертификат (Common Name) является * .g.doubleclick.net

Почему они разные ??

Мой код выглядит так:

from oauth2client.client import flow_from_clientsecrets 

CLIENT_SECRETS = 'client_secrets.json' 

MISSING_CLIENT_SECRETS_MESSAGE = "" 

FLOW = flow_from_clientsecrets(CLIENT_SECRETS, 
    scope='https://www.googleapis.com/auth/plus.me', 
    message=MISSING_CLIENT_SECRETS_MESSAGE) 

    FLOW.step1_get_authorize_url() 
    # the url is outputted and 
    # my browser forward to it to get the verifier 

    FLOW.step2_exchange(verifier) 
    # I paste the verifier and execute this line, then error occurred. 

Любой намек?

PS: моего urllib2 версия 0.7.2

+0

если я прав, вам также необходимо передать request_token, который вы получили на первом шаге, чтобы получить access_token –

+0

Спасибо, что ответили. Я думаю, что API Google передал его мне, потому что здесь код ссылается на его примерный код. (но запуск образца кода породил одно и то же исключение). Вы когда-нибудь успешно запускали образец кода? – xiaohan2012

+0

Я реализовал OAuth, но в java не в python :( –

ответ

1

Для тех, кто наткнулся на этот вопрос благодаря наличию ошибок CertificateHostnameMismatch, я рекомендую вам проверить, какую версию Python вы используете (python --version).

Я был на Python 2.7.2, который, как оказалось, имеет несколько известных проблем/регрессий, связанных с обработкой сертификатов SSL. Я обновился до последней версии в ветке 2.7, и мои ошибки CertificateHostnameMismatch исчезли.

Смежные вопросы