2011-11-25 9 views
16

Próbuję użyć Google API v3, aby uzyskać dostęp do jednego kalendarza google i zgodnie z dokumentacją tutaj: http://code.google.com/apis/calendar/v3/using.html#intro i tutaj: https://code.google.com/apis/console/, potrzebuję rozwiązania "Prosty dostęp API" & "Klucz do aplikacji serwerowych (z IP zamykający)".W jaki sposób mogę użyć "Prostego klucza dostępu do interfejsu API" Google, aby uzyskać dostęp do informacji z Kalendarza Google (PHP)?

Teraz, kiedy utworzyć stronę z tym kodem:

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; 
} 

iw moim „config.php” pliku dodam tylko mój klucz developper (w miejsce „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', 

Ale wtedy dostaję błędy i mówi mi, że próbuje uwierzytelnić za pomocą systemu "OAuth 2.0", którego nie chcę używać. Chcę uzyskać dostęp tylko do jednego kalendarza za pomocą klucza API.

I zdumiewająco, kiedy szukam w google "Prosty klucz dostępu API", nic nie znajduję na ich dokumentach, żadnych przykładach, bez tutoriali, nic. Czy tylko ja używam tego?

Czy ktoś może mi powiedzieć, co robię źle?

+1

To samo tutaj ...... Udało ci się dotrzeć gdziekolwiek? – zaf

+0

To samo tutaj ... jakaś aktualizacja? – redronin

+0

Z ciekawości - czy dodałeś swój adres IP serwera do listy dozwolonych adresów IP w oknie "Prosty dostęp do API"? – gfppaste

Odpowiedz

1

Nie ma czegoś takiego o nazwie Simple API Access key.

Zazwyczaj do autoryzacji jest używany OAuth 2.0. Ale ponieważ masz swój powód, aby tego nie używać.

  • Jeśli chcesz używać autoryzacji OAuth1.0. Potrzebujesz API key w Simple API Access sekcji na stronie API Access.
  • Jeśli chcesz użyć nazwy użytkownika & hasło logowania zamiast OAuth, możesz odwołać się do ClientLogin, ale nie jest to zalecane.
+1

Mówisz, że nie ma czegoś takiego, ale powiedz "dostań klucz api w prostej sekcji dostępu do interfejsu API"? – Kevin

+0

Wystarczy użyć "klucza API", aby uzyskać dostęp. Nie ma żadnego klucza o nazwie "Prosty klucz dostępu API". – Rannnn

+0

Czy sprawdziłeś, czy klucz API jest naprawdę potrzebny? Myślę, że informacje w https://developers.google.com/google-apps/calendar/auth są w konflikcie z https://developers.google.com/accounts/docs/OAuth, a ja mogłem wysłać zapytanie do Calendar API v3 bez klucz API w ogóle, tylko klucz klienta i tajny klucz (OAuth1) – prusswan

-1

Zobacz poniższy link, który jest dla Ciebie pomocny. Biblioteka klienta Google API umożliwia pracę z interfejsami Google API, takimi jak Analytics, AdSense, Google+, Kalendarz, Moderator, Zadania lub Współrzędne na serwerze, w wybranym języku.

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

Dzięki Chintu

+0

To nie odpowiada na pytanie.Biblioteka klienta Google API to koszmar dla prostych integracji, 3 MB biblioteki dla prostego haka ... –

5

(wiem, jest to stara sprawa, ale byłby już zadowolony, jeśli ktoś dał prawdziwą odpowiedź tutaj więc robię to teraz)


Wpadłem na ten sam problem, prosty dostęp do API nie jest dobrze udokumentowany (a może po prostu nie tam, gdzie szukałem), ale korzystając z Google API Explorer znalazłem sposób, aby uzyskać to, czego potrzebuję, co jest w Fakt jest całkiem prosty. Nie potrzebujesz konkretnej biblioteki lib ani niczego: jest to naprawdę proste.

W moim przypadku po prostu potrzebne do wyszukiwania słowa kluczowego w G +, więc po prostu musiał wykonać żądanie GET:

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

Teraz o dostępie kalendarzowego (see here), udawajmy chcemy się pobrać lista reguł kontroli dostępu.Musimy odwołać się do calendar.acl.list które dają nam URI:

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

wypełnić puste pola, i to dość dużo wszystko, co trzeba zrobić. Uzyskaj server key (podmenu Dostęp do API), zapisz go w swoim projekcie i wywołaj w żądanych identyfikatorach URI.

+0

A dla tych, którzy się zastanawiają, prosty dostęp mieści się w domyślnym segmencie, a nie w logowaniu, co oznacza, że ​​jesteś ograniczony do 10 000 zapytań dziennie. – Tsadiq

+6

Nie mogę go uruchomić. ja dostać '{ "error": { "błędy": [ { "domenę": "globalny", "rozum": "required", "komunikat" : "Wyniki", "locationType" "header", "location": "Zezwolenie" } ] "code": 401, "message" : "Logowanie wymagane" } } ' jeśli mogę rozwiązać ten logowanie wymagane. Mam klucz API, uzyskuję dostęp od ip i authorized. – AndreaBogazzi

3

Nie można uzyskać dostępu do informacji z kalendarza za pomocą klucza API . Klucze API (lub prosty klucz dostępu API) nie są autoryzowanymi tokenami i mogą być używane tylko w przypadku niektórych wywołań API, takich jak zapytanie wyszukiwarki Google itp .; Klucze interfejsu API nie umożliwiają dostępu do żadnych konkretnych danych użytkownika, które zakładam, że jest to twój cel za pośrednictwem tej aplikacji kalendarza.

Również z tego, co widzę w twoim kodzie, tworzysz obiekt klienta, który będzie korzystał z uwierzytelniania OAuth 2.0, a więc otrzymujesz komunikaty o błędach uwierzytelniania.

0

Dotarłem do tego wątku, próbując zrobić to samo dzisiaj. Chociaż jest to dość późno, ale odpowiedź brzmi: TAK, w rzeczywistości istnieje prosty klucz API dla apisa, który nie potrzebuje uprawnień użytkownika, a oficjalna biblioteka klienta obsługuje to.

Biblioteka api robi to za pomocą opcji, która jest kluczową parą wartości.

Weźmy przykład uzyskać informacje o danym YouTube wideo, należy użyć tego API: https://godoc.org/google.golang.org/api/youtube/v3#VideosListCall.Do

Aby korzystać klucz API, wystarczy dokonać typ, który implementuje interfejs CallOption i niech zwróci klucz API:

type APIKey struct { 
} 

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

Następnie podczas wywoływania funkcji API, dostarczać APIKey do niego:

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

ten sposób można skonstruować klienta dowcip youtube h vallina http client, a nie oauth client, i ciesz się prostym klawiszem api.

Pierwsza odpowiedź mówi, że można bezpośrednio korzystać z http GET, ale wtedy trzeba będzie obsługiwać błędy i przeanalizować wynik samodzielnie.

+0

edit: Oryginalne pytanie dotyczy php, ale odpowiedź powinna dotyczyć wszystkich klientów, to ten sam zestaw API. – fluter

Powiązane problemy