2012-03-21 21 views
16

OK, więc to pytanie zostało zadane przed here. W odpowiedzi/odpowiedzi na pytanie użytkownik mówi mu, aby zapisał w aplikacji aplikację refresh_token (sesja, a nie db, chociaż nie ma znaczenia, gdzie ją przechowujesz). Po przejrzeniu dokumentacji w Google wydaje się, że access_token ma datę ważności, po której traci ważność. Teraz możemy oczywiście odświeżyć tokena w każdym ustalonym interwale lub jeśli usługa zwróci nieprawidłowy błąd tokena, przedłużając w ten sposób żywotność tokena, ale z jakiegoś powodu ten ręczny proces wydaje się trochę hacky. Moje pytania to:Jak zautomatyzować logowanie do Google API, aby uzyskać token OAuth 2.0, aby uzyskać dostęp do znanego konta użytkownika

  • Czy jest to najbardziej skuteczny (/ ogólnie przyjęty) sposób dostępu do danych kalendarza/aplikacji Google dla znanego konta użytkownika przez ręczne zalogowanie się i utrzymanie tokena w aplikacji? Czy istnieje inny mechanizm, który pozwala nam programowo zalogować się na to konto użytkownika i przejść przez kroki OAuth?

Odpowiedz

25

W mojej aplikacji, przepływ jest tak:

  1. Jeśli nie access_token określonym, przekierowanie użytkownika na stronę Google, w których przyznają oni dostęp do aplikacji dostęp do swoich danych Google. Zwraca kod autoryzacji do Twojej aplikacji.
  2. Użyj kodu autoryzacji, aby uzyskać access_token i refresh_token. Powinieneś również zapisać zwróconą wartość expires_in, która mówi, kiedy wygasa access_token i nie może być już używana.
  3. Zawsze, gdy potrzebujesz dostępu do interfejsu API, możesz sprawdzić swoją bazę danych, jeśli wygasła access_token - jeśli tak, skorzystaj z refresh_token, aby uzyskać nową access_token przed uzyskaniem dostępu do interfejsu API.

Nie natknąłem się na żadne problemy z robieniem tego w ten sposób - jeśli chodzi o użytkownika, muszą tylko przyznać dostęp tylko raz, wtedy aplikacja zajmie się uwierzytelnianiem.

To powinno rozwiązać problem, ponieważ programowo programowo przeprowadza ponowną autoryzację w oparciu o użytkownika, który początkowo przyznał dostęp do aplikacji i nie trzeba nic robić ręcznie. W rzeczywistości nie jestem pewien, czy jest jakikolwiek inny sposób, aby to zrobić, ponieważ aby ponownie wykonać proces OAuth, użytkownik musi siedzieć przed urządzeniem, aby ręcznie przyznać dostęp. To jest kwestia utrzymania w bazie danych access_token i refresh_token.

+0

@mattewh Czy możesz mi pomóc z http://stackoverflow.com/questions/24894789/google-oauth-and-owin-how-to-renew-tcess-token-using-the-refresh-token –

+3

Jeśli musisz mieć interakcję użytkownika, która nie jest zautomatyzowana. –

+0

@KeithTyler OAuth zależy od zgody użytkownika co najmniej raz, po czym nie wymaga dalszej interakcji. –

Powiązane problemy