19

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

+0

Kiểm tra điều này: http://stackoverflow.com/questions/18716674/facebook-login-in-google-cloud-endpoints/22495862#22495862 –

Trả lời

5

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.

+0

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) –

+1

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

+1

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? –

7

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.

+0

Có tương đương python không? –

+0

@JanuszSkonieczny Tôi không biết có hay không nó có sẵn cho python, bạn có lẽ nên hỏi một câu hỏi mới trên SO – tomrozb

+0

bất cứ ai biết làm thế nào để đưa dữ liệu bên trong tiêu đề từ khách hàng Android? – myfknoll

2

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.

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