2013-01-06 23 views
6

Chciałbym użyć Dysku Google, aby działał jak quasi-CMS dla witryny, którą robię, aby właściciele treści mogli edytować swoje treści za pomocą Dysku Google. Chciałbym użyć określonego konta użytkownika, które ma dostęp do Dysku Google (od momentu napisania tego postu, konta usług NIE MA bezpośredniego dostępu do Dysku Google) i może udostępniać dokumenty właścicielom treści.W jaki sposób mogę autoryzować dostęp do konta usługi dysku Google za pomocą konta Google bez korzystania z aplikacji Google?

Po przeczytaniu przez API i samouczki, znalazłem odpowiedź w delegacji: https://developers.google.com/drive/delegation

Moim głównym problemem w tym procesie jest to, że strona nie jest zarządzany przez Google Apps i dlatego czynności opisane w „Delegata domenie ogólna autoryzacja konta usługi "wprawia mnie w zakłopotanie - wydaje się, że powinno być możliwe obsłużenie tej delegacji bez korzystania z Google Apps, ale po wyszukaniu ustawień na Dysku Google dla mojego konkretnego konta użytkownika nie mogę znaleźć możliwość autoryzacji podszywania się.

urywek kodu używam:

static public function getService() { 
    $key = file_get_contents(GOOGLEAPI_KEYFILE); 
    $auth = new Google_AssertionCredentials(GOOGLEAPI_SERVICE_EMAIL, array(GOOGLEAPI_SCOPE), $key); 
    $auth->setPrn(GOOGLEAPI_IMPERSONATION); 
    self::$apiClient = new Google_Client(); 
    self::$apiClient->setUseObjects(true); 
    self::$apiClient->setAssertionCredentials($auth); 
    return new Google_DriveService(self::$apiClient); 
} 

GOOGLEAPI_IMPERSONATION jest specyficzny konto użytkownika i kiedy uruchomić ten kod, państwa wyjątek:

Błąd orzeźwiające token OAuth2, wiadomość: "{" error ":" access_denied "}

Ktoś oferuje jakąkolwiek pomoc? Czy nie rozumiem fundamentalnej koncepcji działania OAuth w zakresie delegacji?

Odpowiedz

5

Konta usługi są przeznaczone dla dwóch różnych przypadkach:

  • Nadanie aplikacji/procesu uwierzytelnienia & powołać usług za pomocą własnej tożsamości. Pomyśl o usługach takich jak przewidywanie, przechowywanie w chmurze itp., W których dane są własnością aplikacji.
  • Podszywanie się pod użytkowników w domenie Google Apps, gdzie administrator domeny może wstępnie autoryzować aplikację do działania w imieniu użytkowników w ich domenie.

Podszywanie się działa w domenach Google Apps, ponieważ administratorzy mają mechanizm autoryzacji aplikacji poza pasmem dla użytkowników za pośrednictwem panelu sterowania. Oczywiście mogą tylko autoryzować aplikację, aby uzyskać dostęp do danych dla kont, którymi zarządzali. W przypadku użytkowników indywidualnych, którzy nie są częścią organizacji, aplikacje muszą korzystać z normalnych przepływów OAuth, aby zażądać autoryzacji od każdego użytkownika.

Nie testowałem tego od jakiegoś czasu, ale na koniec sprawdziłem, czy można używać Dysku z kontem usługi działającym w jego imieniu. Jedynym ograniczeniem, które napotkałem, było to, że nie można było kupić dodatkowego limitu, a aplikacja była ograniczona do początkowego 5GB wolnego miejsca.

+1

Steve, dzięki za odpowiedź. Z powodzeniem skorzystałem z konta usługi, aby przesłać i przeczytać dokument bez żadnych problemów. Nie ma jednak dostępu do przesłanych dokumentów za pośrednictwem interfejsu internetowego Dokumentów Google, który jest wymagany. Powodem, dla którego działanie OAuth użytkownika nie działa, jest to, że chcę używać konta usługi Dokumentów Google jako zasobnika zawierającego dokumenty używane do zapełniania treści w witrynie - więc jeśli użytkownik Google wejdzie na tę stronę, nie ma potrzeby, aby OAuth ich konto lub cokolwiek. –

+4

Popraw, że konta usług nie mają dostępu do interfejsu WWW. Jeśli jest to wymagane, masz kilka opcji. Po pierwsze wystarczy udostępnić dokumenty użytkownikom, którzy muszą mieć do nich dostęp. Wszystko, czego wymaga, to poznanie ich adresu e-mail.Możesz też iść w przeciwnym kierunku i autorować dokumenty na innych kontach, a następnie udostępniać je na koncie usługi. Na koniec, jeśli istnieje tylko jedno konto, które wymaga dostępu, autoryzuj używanie zwykłego oautha z dostępem w trybie offline i pozwól aplikacji działać w imieniu tego użytkownika. –

+0

Dzięki Steve - zajrzę się tym bardziej, gdy powrócę do tego projektu –

Powiązane problemy