Có cách nào để sử dụng nhà cung cấp OAuth2 khác với Google Cloud Endpoints không? Tôi có nghĩa là ví dụ, có được xác thực từ Facebook và sử dụng nó giống như cách chúng tôi sử dụng Auth Tài khoản Google (sử dụng gapi js và đặt lớp người dùng trên @ApiMethod
)Điểm cuối của Google Cloud với nhà cung cấp oAuth2 khác
Trả lời
No. Tôi đã gặp người khác hỏi câu hỏi này và câu trả lời từ google folks (nếu tôi nhớ chính xác) là xác thực người dùng thiết bị đầu cuối hiện chỉ hỗ trợ tài khoản Google.
Có cách nào để thực hiện thay thế không? Giống như lưu trữ Người dùng trong phiên? (Tôi vừa phát hiện ra phiên đó cũng không hoạt động trong Google Cloud Endpoint) –
Chắc chắn, bạn có thể thực hiện bất kỳ thay thế nào bạn muốn và bạn có thể chuyển mã thông báo của hệ thống qua điểm cuối, nhưng bạn sẽ phải tự thực hiện xác thực. – Tom
vấn đề ở đây là làm thế nào để kiểm soát phiên người dùng, bởi vì Google Endpoint không cung cấp phiên, phải không? –
tôi đã viết một ví dụ trao đổi một access token Facebook cho một tạo ra bởi ứng dụng của tôi, và xác nhận nó từ bên trong một phương pháp thiết bị đầu cuối:
https://github.com/loudnate/appengine-endpoints-auth-example
Bạn phải thực hiện của riêng bạn Authenticator
và cập nhật @Api
cấu hình. Dựa trên answer này một xác thực đơn giản sẽ trông như thế này:
public class MyAuthenticator implements Authenticator {
@Override
public User authenticate(HttpServletRequest request) {
String token = request.getHeader("Authorization");
if (token != null) {
// apply your Facebook/Twitter/OAuth2 authentication
String user = authenticate(token);
if (user != null) {
return new User(user);
}
}
return null;
}
}
Và API của bạn định nghĩa
@Api(name = "example", authenticators = {MyAuthenticator.class})
Thông tin thêm về thực hiện chứng thực tùy chỉnh, bạn có thể tìm thấy trong Google documentation.
Google Cloud Endpoints cho phép bạn khôi phục User, HttpServletRequest và HttpServletContext vào các phương thức API của bạn bằng cách tiêm nó làm tham số.
Nó không phải là OAuth2 nhưng đây là một khởi đầu của một giải pháp: https://www.yanchware.com/custom-authentication-for-google-cloud-endpoints/
Các giải pháp được đề xuất là phải tiêm HttpServletRequest trong các phương pháp api cụ thể để truy cập vào phiên.
Kiểm tra điều này: http://stackoverflow.com/questions/18716674/facebook-login-in-google-cloud-endpoints/22495862#22495862 –