Подтвердить что ты не робот

Использование Google OAuth на локальном хосте

Я начал использовать OAuth с Python и Django. Мне это нужно для API Google. Я работаю на localhost, поэтому я не могу зарегистрировать домен для url-callback. Я читал о том, что Google OAuth можно использовать с анонимным доменом. Не можете найти, как и где я могу это сделать?

Изменить:

У меня есть это представление:

def authentication(request):
    CONSUMER_KEY = 'xxxxx'
    CONSUMER_SECRET = 'xxxxx'
    SCOPES = ['https://docs.google.com/feeds/', ]

    client = gdata.docs.client.DocsClient(source='apiapp')
    oauth_callback_url = 'http://%s/get_access_token' % request.META.get('HTTP_HOST')
    request_token = client.GetOAuthToken(
      SCOPES, oauth_callback_url, CONSUMER_KEY, consumer_secret=CONSUMER_SECRET)
   domain = '127.0.0.1:8000'
   return HttpResponseRedirect(
        request_token.generate_authorization_url(google_apps_domain=domain))

И эта ошибка:

Извините, вы достигли страницы входа в домен, который не использует Google Apps. Проверьте веб-адрес и повторите попытку.

Зарегистрировано через https://code.google.com/apis/console/

Изменить:

CONSUMER_KEY = 'xxxxxxxxxxxxxxxxxxxxxxxxxxx'
CONSUMER_SECRET = 'xxxxxxxxxxxxxxxxxxxxxxxxx'
SCOPES = ['https://docs.google.com/feeds/', ]
DOMAIN = 'localhost:8000'


def authentication(request):    
    client = gdata.docs.client.DocsClient(source='apiapp')
    oauth_callback_url = 'http://%s/get_access_token' % DOMAIN

    request_token = client.GetOAuthToken(SCOPES,
                                     oauth_callback_url,
                                     CONSUMER_KEY,
                                     consumer_secret=CONSUMER_SECRET)

    return HttpResponseRedirect(
        request_token.generate_authorization_url())


def verify(request):
    client = gdata.docs.client.DocsClient(source='apiapp')
    f = open('/home/i159/.ssh/id_rsa')
    RSA_KEY = f.read()
    f.close()

    oauth_callback_url = 'http://%s/get_access_token' % DOMAIN

    request_token = client.GetOAuthToken(SCOPES,
                                     oauth_callback_url,
                                     CONSUMER_KEY,
                                     rsa_private_key=RSA_KEY)
    return HttpResponseRedirect(
        request_token.generate_authorization_url(google_apps_domain=DOMAIN))

Ошибка:

Невозможно получить токен запроса OAuth: 400, у потребителя нет сертификата: xxxxxxxxxxxxxxx.apps.googleusercontent.com

4b9b3361

Ответ 1

Чтобы быть понятным, вы можете использовать поток веб-приложений с localhost при разработке на OAuth 1.0 или OAuth 2.0. OAuth 2.0 должен быть предпочтительнее, чем механизм, на который мы фокусируемся. Опыт пользователя для OAuth 2.0 будет значительно лучше.

Там ничего не мешает вам использовать localhost в качестве URL-адреса обратного вызова. Я делаю это сам все время. Вам просто нужно убедиться, что URL-адрес обратного вызова точно совпадает, включая любые номера портов, и вы не можете развернуть приложение таким образом по понятным причинам. Установленные приложения сложнее, но если вы что-то делаете с Django, можно воспользоваться тем фактом, что OAuth 2.0 является системой маркеров-носителей. До тех пор, пока вы сохраняете токен обновления на стороне сервера, вы можете выполнить аутентификацию с помощью собственного приложения вне диапазона, а затем отправить токен-носитель на установленное приложение. У установленного приложения будет примерно одночасовое окно, в котором вы должны будете звонить, прежде чем вам нужно будет повторить этот процесс. В большинстве случаев это может быть прозрачно для пользователя. Передача токена-носителя должна происходить по зашифрованному каналу.

Ответ 3

Попробуйте свой код без аргументов:

return HttpResponseRedirect(request_token.generate_authorization_url())