Данные Google / OAuth / AppEngine / Python - правильная регистрация веб-приложения - PullRequest
2 голосов
/ 03 апреля 2011

Я создаю веб-приложение с помощью этой комбинации инструментов. Я аутентифицируюсь с App Engine следующим образом:

class googleLogin(webapp.RequestHandler):
  def get(self):
    callbackURL = 'http://%s/googleLoginCallback' % getHost()

    #Create a client service
    gdClient = gdata.docs.service.DocsService()
    gdata.alt.appengine.run_on_appengine(gdClient)
    gdClient.SetOAuthInputParameters(gdata.auth.OAuthSignatureMethod.HMAC_SHA1, 
                                     _GoogleConsumerKey, 
                                     consumer_secret=_GoogleConsumerSecret)

    #Get a Request Token        
    requestToken = gdClient.FetchOAuthRequestToken(scopes=_GoogleDataScope,
                                                   extra_parameters={'xoauth_displayname': APP_NAME})

    #Persist token secret
    self.session = Session()
    self.session[TOKENSECRETKEY]        = requestToken.secret

    gdClient.auto_set_current_token = True
    gdClient.SetOAuthToken(requestToken)
    authUrl = gdClient.GenerateOAuthAuthorizationURL(callback_url=callbackURL)
    self.redirect(authUrl)

Я аутентифицировал свой домен с помощью Google на https://www.google.com/accounts/ManageDomain,, введя целевой URL-адрес, и использую данный Ключ / Секрет потребителя. Например, если моим доменом был juno.appspot.com, я использую http://juno.appspot.com в качестве префикса целевого URL-адреса.

Процесс работает; однако Google представляет это сообщение пользователю в желтом окне безопасности:

«Приложение, которое направило вас здесь претендует быть «хххххх». Мы не может подтвердить это требование как приложение работает на вашем компьютере, так как в отличие от веб-сайта. Мы рекомендуем что вы отказываете в доступе, если вы не доверяете приложение. "

Не думаю, что мне следует получать эту ошибку, поскольку мой сервер получает токен запроса и создает URL-адрес авторизации. Кто-нибудь знает, как избавиться от этого предупреждения?

У регистрации домена Google есть возможность загрузить сертификат, но мне не нужно этого делать, потому что я использую OAuth с методом подписи HMAC_SHA1.

Кроме того, это не имеет значения, но я делаю все это через UIWebView на iPhone. Я специально пытаюсь выполнить всю аутентификацию на стороне сервера, чтобы избежать раскрытия моего Consumer Key / Secret.

Спасибо за любые советы:)

Ответы [ 2 ]

3 голосов
/ 03 апреля 2011

Решено.

Виновна эта строка сверху:

extra_parameters={'xoauth_displayname': APP_NAME})

Установка этого значения для зарегистрированного приложения намеренно вызывает предупреждение для пользователей, как указано в документации Google:

xoauth_displayname :

(необязательно) Строка, идентифицирующая приложение.Эта строка отображается для конечных пользователей на странице подтверждения авторизации Google.Для зарегистрированных приложений значение этого параметра переопределяет имя, установленное при регистрации, и также вызывает сообщение о том, что идентификация не может быть подтверждена. Для незарегистрированных приложений этот параметрпозволяет им указывать имя приложения. В случае незарегистрированных приложений, если этот параметр не задан, Google идентифицирует приложение, используя значение URL-адреса oauth_callback;если ни один из параметров не установлен, Google использует строку «анонимный».

Удаление этой строки больше не позволяет мне использовать «хорошее» имя вместо домена, но избавляет от этого раздражающегоЖелтая коробка:)

0 голосов
/ 03 апреля 2011

Я не уверен точно, где проблема может быть в вашем коде, но у меня есть одна страница oauth / appengine / gdata пример , которая может, по крайней мере, указать вам правильное направление.Вы пытались перейти на сайт прямо из браузера iPhone / настольного компьютера, чтобы увидеть, какое сообщение доставлено?

Надеюсь, это поможет.

В качестве альтернативы, возможно, это связано с пользовательским агентомUIWebView устанавливает?

...