Использование Google OAuth на localhost
Я начал использовать OAuth с Python и Django. Мне это нужно для Google APIs. Я работаю на localhost, поэтому я не могу зарегистрировать домен для url-обратного вызова. Я читал о том, что Google OAuth можно использовать с анонимным доменом. Не могу найти, как и где я могу это сделать?
Edit:
у меня такой вид:
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/
Edit:
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
3 ответов
чтобы быть ясным, вы можете использовать поток веб-приложений с localhost при разработке на OAuth 1.0 или OAuth 2.0. OAuth 2.0 следует предпочесть, поскольку это механизм, на котором мы сосредоточены. Пользовательский интерфейс для OAuth 2.0 будет значительно лучше.
ничто не мешает вам использовать localhost в качестве URL-адреса обратного вызова. Я все время так делаю. Вам просто нужно убедиться, что URL обратного вызова точно соответствует, включая любые номера портов, и вы не можете развертывание приложения таким образом по очевидным причинам. Установленные приложения сложнее, но если вы что-то делаете с Django, можно воспользоваться тем фактом, что OAuth 2.0 является системой токенов-носителей. Пока вы сохраняете маркер обновления на стороне сервера, вы можете аутентифицировать свое собственное приложение вне диапазона, а затем отправить маркер носителя в установленное приложение. Ваше установленное приложение будет иметь примерно часовое окно, в котором можно совершать звонки до вам нужно будет повторить процесс. В большинстве случаев это может происходить прозрачно для пользователя. Передача токена носителя должна происходить по зашифрованному каналу.
протокол OAuth 1.0 для Установленные Приложения
кроме того, вы, вероятно, не хотите включать свой фактический CONSUMER_KEY
и CONSUMER_SECRET
в примере кода.
попробуйте свой код без аргументов:
return HttpResponseRedirect(request_token.generate_authorization_url())