Tôi đang viết ứng dụng Android đàm thoại với máy chủ từ xa và tôi muốn cho phép người dùng ứng dụng đăng nhập vào máy chủ bằng cách sử dụng thông tin đăng nhập google cư trú trên điện thoại của họ, tức là không yêu cầu người dùng nhập mật khẩu google của họ ở bất cứ đâu trong ứng dụng của tôi. Ví dụ: nếu điện thoại (Android) của người dùng đã được định cấu hình với "[email protected]", sau đó họ cài đặt và chạy ứng dụng của tôi, ứng dụng của tôi sẽ hiển thị chúng với hộp thoại có nội dung "Bạn có muốn đăng nhập bằng someguy @ không gmail.com? ", và khi nhấn nút Ok, họ đã thiết lập một id trên máy chủ của tôi biết địa chỉ email của họ là [email protected], được chứng nhận bởi chính google.Ủy quyền tài khoản Google trong ứng dụng Android
Tôi đã tìm thấy một phần công thức nấu ăn rộng rãi và đa dạng về cách thực hiện điều này, bao gồm tài liệu oauth2 của chính Google, nhưng chưa biết cách làm cho tất cả diễn ra.
Tôi có mã Android sử dụng Trình quản lý tài khoản để tìm ra tài khoản google nào trên một điện thoại cụ thể. Tôi nhắc người dùng sử dụng tài khoản google nào họ muốn sử dụng để đăng nhập và sau đó tôi nhận lại mã thông báo ủy quyền.
Quá thời điểm đó, tôi đang quay bánh xe khá nhiều. Các công thức nấu ăn tôi đã nhìn dường như gọi cho tôi làm một get http của mẫu này:
http://<myWebServer>.com/_ah/login?continue=<someUrlIChoose>&auth=<authToken>
... mà (a) được dissatisfying ở chỗ nó dường như là đặc trưng cho AppEngine và tôi muốn được tự do để chạy điều này trên bất kỳ đầu cuối nào mà tôi chọn, và (b) thậm chí thử nghiệm với appengine, thể hiện appengine mà tôi đã thiết lập dường như không được báo hiệu, tức là các bản ghi hiển thị các truy vấn tới nó (tôi đã hy vọng url someUrlIChoose sẽ được gọi với một cái gì đó) ... do đó không có cơ hội để được thông báo về tính hợp lệ của mã thông báo.
câu hỏi cụ thể sẽ bao gồm:
- Tôi phải làm gì với thẻ auth ... làm tôi gửi nó tới máy chủ của tôi, và bằng cách nào đó có google máy chủ liên lạc của tôi để xác minh tính hợp lệ của mã thông báo cho tài khoản được chỉ định? Hoặc là có một số thông tin liên lạc backchannel được cho là đã có (ở giai đoạn này của quá trình ) bắt nguồn từ máy chủ google để thông báo cho máy chủ của tôi rằng mã thông báo này hợp lệ (và nếu vậy, làm cách nào để thiết lập)? Hoặc một cái gì đó khác?
- Tôi có quyền giả sử rằng quá trình này có thể thực hiện được trong ngữ cảnh của bất kỳ đầu cuối nào (không chỉ là appengine) không?
- Là oauth2 những gì tôi nên sử dụng (trái ngược với oauth1, hoặc một cái gì đó khác)? Tất cả mọi thứ tôi đọc dường như ngụ ý rằng hỗ trợ của google cho oauth2 là "thử nghiệm" ... nhưng tôi không xác định chắc chắn các xác nhận như vậy hiện tại hay cũ; và ngay cả khi hiện tại, google có lịch sử giữ các sản phẩm khác nhau ở dạng không cố định vĩnh viễn (ví dụ: phiên bản beta vĩnh cửu), vì vậy tôi không biết phải kết luận điều gì về điều này.
- Mọi thứ khác có liên quan ...