2014-12-21 49 views
10

Tuần vừa qua tôi đã làm ngập mình với các liên kết và dẫn dắt mình trong quá nhiều vòng kết nối để đếm, vì vậy tôi nghĩ tôi sẽ đặt câu hỏi ở đây. Tôi có một ứng dụng Android hiển thị các bài kiểm tra trên web trỏ đến các url mà người dùng phải đăng nhập bằng tài khoản Google của họ để xem (phần phụ trợ được xây dựng trong Google App Engine). Do người dùng cuối có thể được đăng nhập vào tài khoản Google của họ trên Android của họ, tôi muốn quá trình đăng nhập được tự động. Hiện tại, trên webview đầu tiên, người dùng mở ra chúng được trình bày bằng biểu mẫu đăng nhập của Google và trang tiếp theo thực sự xấu xí hỏi "bạn có muốn cho example.appspot.com sử dụng tài khoản Google của mình không?"Tự động đăng nhập vào tài khoản Google trên webview của Android

Quá trình đó rất đáng sợ đối với trải nghiệm người dùng. Tôi đã nhìn thấy một vài tài nguyên quý giá ở đây và có liên quan đến tự động đăng nhập, nhưng tôi thành thật bị mất trong biển gần như-tôi-muốn-nhưng-không-khá để có thể phân biệt hướng tôi nên đi .

Tôi đọc qua Nick's hướng dẫn về cách xác thực ứng dụng bằng App Engine, nhưng chỉ có mã thông báo không cho tôi ID người dùng được chỉ định duy nhất được liên kết với mọi tài khoản Google trên chương trình phụ trợ. Trên hết, kinh nghiệm trước đây đã dạy tôi một cách khó khăn rằng phiên xem web của ứng dụng không phù hợp với phiên HTTPClient của ứng dụng. Vì vậy, ngay cả khi tôi có thể đăng nhập bằng phương thức của Nick, nó sẽ không giúp tôi đăng nhập vào các bản xem trước trên web.

Sau đó, tôi đã xem qua this tutorial, thực sự có vẻ thực sự hứa hẹn, nhưng cho đến nay tôi chưa thể điều chỉnh mã của mình để hoạt động với chính tôi.

Tôi cũng tìm thấy this SO link gợi ý rằng tất cả những gì tôi cần làm là chuyển mã thông báo xác thực (mà tôi có thể lấy thông qua phương thức của Nick) vào mọi chế độ xem web tôi tải dưới dạng cookie.

Và đó là về nó. Tất cả đều là những cách tiếp cận khá khác nhau, vì vậy tôi tự hỏi nếu có bất kỳ thứ gì trong số đó thực sự là những gì tôi muốn. Hoặc, nếu một nơi nào đó ra khỏi đó một cách tiếp cận hợp lý đơn giản thực sự tồn tại. Tôi thực sự đánh giá cao nếu ai đó biết câu trả lời đơn giản về câu trả lời này. Cảm ơn bạn!

+1

bạn đã bao giờ tìm thấy giải pháp chưa? – AlleyOOP

Trả lời

1

Vì lý do bảo mật WebViews không có quyền truy cập vào bộ nhớ cache của điện thoại, lưu trữ cookie vv, thay vào đó bạn nên sử dụng Chrome Custom Tabs mới có thể tự động đăng nhập người dùng của bạn.


Về "bạn muốn cho phép example.appspot.com sử dụng tài khoản Google của bạn?" màn; đây là quy trình tiêu chuẩn OAuth và yêu cầu Người dùng đăng nhập và cho phép ứng dụng của bạn truy cập vào thông tin tài khoản của họ.

Trong ứng dụng App Engine 'example.appspot.com' của bạn, nếu bạn đang sử dụng API yêu cầu thông tin người dùng, như API Lịch Google, bạn bắt buộc phải yêu cầu Người dùng chấp thuận cụ thể để truy cập thông tin này .

Sau khi được bạn phê duyệt, bạn có thể lưu access and refresh tokens để thực hiện cuộc gọi API trong tương lai thay mặt họ mà không cần sự đồng ý của người dùng lặp lại. Bạn có thể xem toàn bộ luồng Oauth hoạt động như thế nào trong OAuth 2.0 Playground.

Ngay cả khi bạn tự động đăng nhập người dùng của mình, họ sẽ vẫn thấy trang phê duyệt yêu cầu ứng dụng của bạn có quyền truy cập vào thông tin của họ. Để phát triển một hack để mạnh mẽ chấp thuận việc truy cập vào thông tin của người dùng thay cho họ là một vi phạm an ninh lớn.


Bạn có thể xem luồng mới Firebase Authentication để dễ dàng quản lý trải nghiệm Oauth của người dùng trong ứng dụng App Engine của bạn.

+0

Cảm ơn Jordan - đây là một câu hỏi cũ, nhưng Google đã cải thiện rất nhiều quá trình này với Firebase Auth kể từ đó. – Pete

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