2015-08-27 19 views
9

Đây là cách truyền thống để có được token từ GoogleApiClient sử dụng trong Google+ đăng nhập:Lấy thẻ tài khoản Google từ GoogleApiClient khi chưa được phép GET_ACCOUNTS

String token = GoogleAuthUtil.getToken(apiClient.getContext(), getAccountNameFromGoogle(apiClient), SCOPE); 

Tuy nhiên, GetAccountNameFromGoogle phương pháp đòi hỏi android.permission.GET_ACCOUNTS phép và trong Android M Developer Preview 3, sự cho phép này hiện được đánh dấu là nguy hiểm và được nhóm thành nhóm liên hệ. Điều đó có nghĩa là nếu ai đó muốn đăng nhập vào ứng dụng của tôi, anh ấy cần phải cấp quyền truy cập đầy đủ cho ứng dụng của tôi mà quá mức cần thiết.

Có cách nào để đạt được điều này mà không có sự cho phép của GET_ACCOUNTS không?

Một câu trả lời tiềm năng mà tôi nhận được là lấy tên tài khoản từ AccountPicker, nhưng buộc người dùng phải chọn tài khoản của mình hai lần (một lần để xác thực Google Plus và một lần cho AccountPicker) cũng không phải là giải pháp rất thân thiện.

+0

tôi cố gắng sử dụng G + signin nút [ở đây] (https://github.com/googlesamples/google-services/tree/master/android/signin) và đăng nhập thành công mà không sử dụng quyền 'android.permission.GET_ACCOUNTS'. Tôi thấy rằng nó hoạt động trên Lollipop và có một vấn đề trên M preview 3 khi chạy đến 'Plus.PeopleApi.getCurrentPerson (mGoogleApiClient) .getDisplayName();', nó sẽ có con trỏ null. Tôi đã báo cáo vấn đề [ở đây] (https://github.com/googlesamples/google-services/issues/25). – bjiang

+0

Có, tôi đã sử dụng tính năng đăng nhập đó. Tuy nhiên, chỉ cho phép bạn sử dụng các API trong các dịch vụ phát. Nếu bạn muốn chuyển tiếp mã thông báo tới máy chủ hoặc sử dụng trên các API khác ngoài dịch vụ phát, bạn cần truy xuất mã thông báo. –

Trả lời

0

Vì vậy, đây là cách tôi cuối cùng giải quyết nó:

Tôi đã bỏ GoogleApiClient hoàn toàn và chuyển sang AccountPicker. Nó không phải là hoàn hảo, nhưng tôi vẫn có thể sử dụng tất cả các tính năng của GoogleApiClient, mặc dù không phải là dễ dàng.

hướng dẫn của Google như sau: https://developers.google.com/android/guides/http-auth

+0

Bạn nhận được thông tin người dùng như tên và thông tin khác từ google plus mà không cần sử dụng googleApiClient như thế nào? –

+0

@VihaanVerma Sau khi tôi nhận được mã thông báo, tôi có thể sử dụng API REST của Google+ với mã thông báo đó để truy xuất tất cả thông tin. –

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