Как использовать Google "Простой доступ к API-интерфейсу" для доступа к информации Календаря Google (PHP)? - программирование
Подтвердить что ты не робот

Как использовать Google "Простой доступ к API-интерфейсу" для доступа к информации Календаря Google (PHP)?

Я пытаюсь использовать Google API v3 для доступа к одному календарю Google и в соответствии с документацией здесь: http://code.google.com/apis/calendar/v3/using.html#intro и здесь: https://code.google.com/apis/console/, мне нужно решение "Простой доступ к API" и "Ключ для серверных приложений (с блокировкой IP)".

Теперь, когда я создаю страницу с этим кодом:

session_start();

require_once 'fnc/google-api-php-client/src/apiClient.php';
require_once 'fnc/google-api-php-client/src/contrib/apiCalendarService.php';

$apiClient = new apiClient();
$apiClient->setUseObjects(true);
$service = new apiCalendarService($apiClient);

if (isset($_SESSION['oauth_access_token'])) {$apiClient->setAccessToken($_SESSION['oauth_access_token']);
} else {
    $token = $apiClient->authenticate();
    $_SESSION['oauth_access_token'] = $token;
}

и в моем файле config.php я добавляю ТОЛЬКО мой ключ разработки (вместо "X" ):

global $apiConfig;
$apiConfig = array(
    // True if objects should be returned by the service classes.
    // False if associative arrays should be returned (default behavior).
    'use_objects' => false,

    // The application_name is included in the User-Agent HTTP header.
    'application_name' => '',

    // OAuth2 Settings, you can get these keys at https://code.google.com/apis/console
    'oauth2_client_id' => '',
    'oauth2_client_secret' => '',
    'oauth2_redirect_uri' => '',    

    // The developer key, you get this at https://code.google.com/apis/console
    'developer_key' => 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX',

    // OAuth1 Settings.
    // If you're using the apiOAuth auth class, it will use these values for the oauth consumer key and secret.
    // See http://code.google.com/apis/accounts/docs/RegistrationForWebAppsAuto.html for info on how to obtain those
    'oauth_consumer_key'    => 'anonymous',
    'oauth_consumer_secret' => 'anonymous',

Но потом я получаю ошибки, и он говорит мне, что пытается аутентифицироваться с использованием системы "OAuth 2.0", которую я не хочу использовать. Я хочу получить доступ к одному календарю с помощью ключа API.

И удивительно, что при поиске в Google "Простой доступ к API-интерфейсу" я ничего не нахожу, ничего на их документах, нет примеров, нет учебников, ничего. Я единственный, кто использует эту вещь?

Так может кто-нибудь сказать мне, что я делаю неправильно?

4b9b3361

Ответ 1

(я знаю, что это старый вопрос, но я был бы рад, если бы кто-то дал настоящий ответ, поэтому я делаю это сейчас)


Я столкнулся с одной и той же проблемой: простой доступ к API не очень хорошо документирован (или, может быть, просто не там, где я искал), но используя Google API Explorer Я нашел способ получить то, что мне нужно, что на самом деле довольно просто. Вам не нужна конкретная lib или что-то еще: на самом деле это действительно просто.

В моем случае мне просто нужно было искать ключевое слово на G +, поэтому мне просто нужно было выполнить запрос GET:

https://www.googleapis.com/plus/v1/activities?query={KEYWORD}&key={YOUR_API_KEY}

Теперь для доступа к календарю (см. здесь), предположим, что мы хотим получить список правил управления доступом. Нам нужно обратиться к calendar.acl.list, которые дают нам URI:

https://www.googleapis.com/calendar/v3/calendars/{CALENDAR_ID}/acl?key={YOUR_API_KEY}

Заполните пробелы, и это почти все, что вам нужно сделать. Получите серверный ключ (подменю API Access), сохраните его где-нибудь в своем проекте и вызовите его в URI, которые вы запрашиваете.

Ответ 2

Вы не можете получить доступ к своей информации календаря с помощью API-ключа. Клавиши API (или простой ключ API-интерфейса) не являются авторизованными токенами и могут использоваться только для некоторых вызовов API, таких как поисковый запрос Google и т.д.; Ключи API не позволят вам получить доступ к каким-либо конкретным данным пользователя, которые, как я предполагаю, являются вашей целью через это приложение календаря.

Кроме того, из того, что я вижу в вашем коде, вы создаете клиентский объект, который будет использовать аутентификацию OAuth 2.0, и, следовательно, вы получаете сообщения об ошибках аутентификации.

Ответ 3

Нет такой вещи, которая называется Simple API Access key.

Обычно для авторизации используется OAuth 2.0. Но поскольку у вас есть причина не использовать его.

  • Если вы хотите использовать OAuth1.0 для авторизации. Вам нужно API key в Simple API Access на странице API Access.
  • Если вы хотите использовать логин и пароль для входа вместо OAuth, вы можете обратиться к ClientLogin, но это не рекомендуется.

Ответ 4

Я попал в эту тему, пытаясь сделать то же самое сегодня. Хотя это уже поздно, но ответ "ДА", на самом деле есть простой ключ API для тех, кто не нуждается в авторизации пользователей, и официальная клиентская библиотека поддерживает это.

Библиотека api делает это с помощью опций, которые являются ключевыми, парами значений.

Возьмем пример получения информации о данном видео youtube, вы бы использовали этот api: https://godoc.org/google.golang.org/api/youtube/v3#VideosListCall.Do

Чтобы использовать ключ api, просто создайте тип, реализующий интерфейс CallOption, и пусть он вернет ключ api:

type APIKey struct {
}

func (k *APIKey) Get() (string, string) {
    return "key", "YOU API KEY HERE"
}

Затем, вызывая API, поставьте ему APIKey:

youtube, err := youtube.New(&http.Client{})
call := youtube.Videos.List("snippet,contentDetails,statistics").Id(id)
rsp, err := call.Do(opt)

Таким образом, вы можете сконструировать клиент youtube с клиентом http: vallina, а не oauth-клиентом, и пользоваться простым ключом api.

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

Ответ 5

См. ниже ссылку, которая вам полезна. Клиентская библиотека Google API позволяет вам работать с Google API, такими как Google Analytics, Adsense, Google+, Календарь, Модератор, Задачи или Локатор на своем сервере, на выбранном вами языке.

http://code.google.com/p/google-api-php-client/

Спасибо, Chintu