Jest to tradycyjny sposób, aby otrzymać token z GoogleApiClient stosowane w Google+ logowanie:Uzyskanie tokena do konta Google z GoogleApiClient bez zgody GET_ACCOUNTS
String token = GoogleAuthUtil.getToken(apiClient.getContext(), getAccountNameFromGoogle(apiClient), SCOPE);
Jednak GetAccountNameFromGoogle
metoda wymaga android.permission.GET_ACCOUNTS
pozwolenie i Android M Developer Preview 3, to uprawnienie jest teraz oznaczony jako niebezpieczny i pogrupowany w grupę kontaktów. Oznacza to, że jeśli ktoś chce się zalogować do mojej aplikacji, musi przyznać mojej aplikacji pełne uprawnienia do kontaktów, co jest nieco przesadzone.
Czy istnieje sposób na osiągnięcie tego celu bez zgody na GET_ACCOUNTS
?
Jedną z potencjalnych odpowiedzi, które znalazłem, jest uzyskanie nazwy konta od AccountPicker, ale to zmusza użytkownika do wybrania jego konta dwa razy (raz dla uwierzytelniania Google Plus i raz dla konta), co również nie jest zbyt przyjaznym rozwiązaniem.
Próbowałem użyć przycisku G + internetową logowania [tutaj] (https://github.com/googlesamples/google-services/tree/master/android/signin) i pomyślne logować bez używania uprawnień "android.permission.GET_ACCOUNTS". Zauważyłem, że działa on na Lollipop i ma problem z M podglądem 3 podczas uruchamiania do 'Plus.PeopleApi.getCurrentPerson (mGoogleApiClient) .getDisplayName();', otrzyma wskaźnik zerowy. Zgłosiłem problem [tutaj] (https://github.com/googlesamples/google-services/issues/25). – bjiang
Tak, używam już tego logowania. Pozwala to jednak tylko korzystać z interfejsów API w usługach rozrywkowych. Jeśli chcesz przekazać token na serwer lub użyć go na innych interfejsach poza usługami odtwarzania, musisz pobrać token. –