4

Я пытаюсь создать веб-страницу PHP, которая требует чтения некоторых данных из электронной таблицы google в моем домене (я использую бесплатную версию Google Apps).Авторизация запросов с OAuth 2.0 в API Google Spreadsheet

Таблицу для чтения является непубличной, но она видна некоторым людям в моем домене. Поскольку он не является общедоступным, я знаю, что будут некоторые средства аутентификации и авторизации, даже если я использую API для его чтения.

Я нашел эту страницу, но есть что-то, что я не понимаю: http://code.google.com/intl/zh-TW/apis/spreadsheets/data/3.0/developers_guide.html#Auth

Он говорит, что мы должны использовать протокол OAuth 2.0, это нормально. Но он также говорит, что во время авторизационного процесса «Google отображает диалоговое окно OAuth для пользователя, предлагая им разрешить ваше приложение запрашивать некоторые из их данных»..

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

Любые советы будут очень желанными.

ответ

4

То, что вы на самом деле пытаетесь выполнить проверку подлинности Server to Server между вашим сервером и Google.

Таким образом, когда посетитель заходит на вашу страницу, вы будете захватывать данные из своей собственной таблицы без участия третьей стороны.

I'ts возможно вы найдете то, что вы ищете в Google Service Account и here

Кроме того, другое решение (которое гораздо легче выполнить, но может иметь некоторый набор спины) заключается в использовании протокол oauth 2.0 с вашей учетной записью Google dev (получен из API консоли Google).

  1. Если вы еще не сделали, создать учетную запись Google Dev (консоли Google API)
  2. Генерация доступа/токен обновления для приложения с «автономной» грант - означает, что вы можете делать запросы API с помощью разработчика на вашу учетную запись в электронной таблице, даже если вы не вошли в систему со своей учетной записью электронной таблицы.
  3. Сохраните обновленный токен, который вы создали, и используйте его для создания токена доступа снова и снова (токены доступа последние 1 час).

Обновить токен не должен истекать, но на всякий случай он всегда может сгенерировать его и заменить тот, который у вас был с новым, и продолжать генерировать токены доступа с ним.

Основной набор на тот случай, если токен обновления будет признан недействительным, вам придется вручную его заменить, так как вам потребуется повторно предоставить доступ к вашей учетной записи разработчика, чтобы получить доступ к вашей учетной записи электронной таблицы.

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

Meny

2

Да, протокол OAuth означает, что когда вы попытаетесь спросить защищенные ресурсы с другой стороны (google), ваш сайт должен перенаправить пользователя на другой сайт, показывая ему диалог входа/пароля google с запросом подтверждения, что пользователь соглашается разрешить вашему сайту использовать ресурсы пользователя с другого сайта (Google в вашем случае). Вот как OAuth работает

и Google нужны учетные данные Yours пользователя, потому что Google не уверен, что пользователь именно этот пользователь (если он не имеет куки для примера)

+0

Я немного смущен. Люди, которые посещают мою веб-страницу, просто гости, и у них нет учетной записи google в моем домене Google App. Я хочу, чтобы моя веб-страница была общедоступна, хотя требуемые данные - из частного документа электронной таблицы google в моем домене Google App. – bobo

+0

Является ли OAuth применимым только к чтению данных из чужих доменов? Я читаю данные из своего собственного домена, над которым я контролирую, является ли OAuth еще полезной в моей ситуации? – bobo

+0

Я не уверен, может быть, вам понадобится какая-то огромная настройка oauth в вашем случае .. так что она будет прозрачно (для пользователя) делать все запросы-перенаправления, а затем показывать ваши данные. Но на самом деле это должен быть протокол, помогающий вам показывать на своем сайте данные из Google (facebook, что угодно), которые учитывают ваши пользователи. для вас задача, может быть, вам нужно выбрать другое решение – javagirl

4

Google & OAuth учебник: я искал дней, чтобы найти это. Это намного лучше, чем любой другой учебник стиля OAuth Я использовал. Он предназначен для подключения к Google Docs/Google Drive.

Python пример здесь, также и другие примеры для Java и т.д.: https://developers.google.com/drive/examples/python

Примечание вам нужно добавить токен обновления к нему. Но это работает так, как вы ожидали.

Также для подключения к использованию электронных таблиц:

  SpreadsheetService service = 
        new SpreadsheetService("MySpreadsheetIntegration-v1"); 

      service.setHeader("Authorization", "Bearer " + accessToken); 
2

Вы можете использовать новые при условии oauth2 потока

//flow use httpTransport, clientSecrets, json factory and datastore factory 
val flow = new GoogleAuthorizationCodeFlow 
    .Builder(httpTransport,JSON_FACTORY,clientSecrets,SCOPES) 
    .setDataStoreFactory(datastoreFactory) 
    .build() 

// authorize 
val credential=new AuthorizationCodeInstalledApp(flow, new LocalServerReceiver()).authorize("user") 

и использовать его с вашими услугами GData:

val service:SpreadsheetService=new SpreadsheetService("SpreadsheetIntegration") 
service.setOAuth2Credentials(credential) 

полными пример в scala: https://github.com/spaced/spreadsheet-oauth2-example