2017-07-25 14 views
5

Chúng tôi có các thiết bị tùy chỉnh chạy trên hệ điều hành Android nhưng không kết hợp các dịch vụ của Google Play.
Chúng tôi có thông tin đăng nhập Google bằng cách sử dụng xác thực Webview Oauth2.0. Và theo tài liệu nó đã được deprected.
Tôi đọc rằng có một cách https://developers.google.com/identity/sign-in/android/ nhưng điều này có vẻ như nó đòi hỏi sự kết hợp gradle cho các dịch vụ chơi.
Tôi có thể sử dụng cách nào để xác thực google?
Tôi đã tìm thấy 2 tùy chọn như bên dưới nhưng chúng sẽ hữu ích trong trường hợp của tôi không?
1. https://firebase.google.com/docs/auth/android/start/
2. https://developers.google.com/api-client-library/java/google-api-java-client/oauth2Cách thay thế để sử dụng chế độ xem web cho oAuth Google mà không cần kết hợp dịch vụ Google Play

Mà có thể là thích hợp nhất cho yêu cầu của tôi
Xin vui lòng giúp.
Kính trọng,
Shraddha

Trả lời

4

Vâng, thực sự google khá một số thời gian trước đây đã bị chặn khả năng để đăng nhập vào các dịch vụ của nó thông qua ứng dụng của nội WebView. Lý do là Google không tin tưởng các nhà cung cấp ứng dụng bên ngoài, nơi mà Google không biết về bảo mật kết nối. Nó buộc các nhà cung cấp ứng dụng bên ngoài sử dụng các phương thức đăng nhập của Google vào các dịch vụ của Google.

Nguồn: Modernizing OAuth interactions in Native Apps for Better Usability and Security

Trên thực tế bạn đã tìm thấy những phương pháp quyền sử dụng dịch vụ của Google, tuy nhiên, căn cứ hỏa lựcGoogle Đăng nhập có nhược điểm là làm cho họ ususable bởi bạn, cụ thể là cả hai cần Dịch vụ Google Play. Firebase needs themGoogle Sign-in needs them. Vì vậy, không có cách nào chính thức để sử dụng cả trên các thiết bị không có Dịch vụ của Google Play.

Có một cách khác: Chrome Custom Tabs. Tuy nhiên, họ yêu cầu Chrome được cài đặt trên thiết bị. Và kể từ một thời gian dài it also uses Google Play Services. Hơn nữa, Các tab tùy chỉnh của Chrome đã được giới thiệu sau khi Chrome đã kết hợp Dịch vụ của Google Play

Tuy nhiên, có một bản hack. Khai báo tác nhân người dùng của WebView nội bộ của ứng dụng dưới dạng Chrome. Đây là the documentation. Như đã thấy ở dưới cùng của trang này, bạn có thể loại bỏ Strings sau từ WebView User Agent String:

  • Version/_X.X_ trên Kitkat Devices
  • wv trên + thiết bị Lollipop.

Tuy nhiên, tôi không khuyên bạn nên sử dụng phương pháp này và vui lòng khuyến khích tuân thủ Chính sách của Google, nếu có khả năng.

Hy vọng rằng giải thích này là đủ.

EDIT: Theo bình luận dưới đây, Goole Api Java Client không cần dịch vụGoogle Play, vì vậy đây có thể là một lựa chọn.

+0

Xin chào, Cảm ơn rất nhiều vì đã dành thời gian cho bạn.Theo câu trả lời trên SO: https://stackoverflow.com/questions/22142641/access-to-google-api-googleaccountcredential-usingoauth2-vs-googleauthutil-get Thư viện ứng dụng khách API của Google dành cho Java là thư viện chung để truy cập Dịch vụ của Google từ tất cả các loại ứng dụng (web, cài đặt hoặc ứng dụng Android). Vì vậy, nó có thể là một cách chung chung mà không có dịch vụ chơi được cài đặt. ĐÚNG? –

+1

Ok. Theo phần này [Ứng dụng khách Java của Google Api] (https://developers.google.com/api-client-library/java/google-api-java-client/oauth2#android) không cần Dịch vụ của Google Play. Vì vậy, bạn có thể thử điều đó. Tôi không nhận thấy, rằng _Google Api Java Client_ và _Google Sign-In_ là hai điều khác nhau. –

+0

Cảm ơn. Nhưng làm cách nào để nhận mã thông báo và ủy quyền cho người dùng? –

Các vấn đề liên quan