[英]Google Cloud Endpoints and user's authentication
我目前剛進入AppEngine世界,並希望使用Cloud Endpoints為我正在開發的移動應用程序創建后端。
我現在的一個問題是關於用戶的身份驗證。 我一直在關注App Engine上的Udacity的MOOC,他們教我們如何使用Google帳戶驗證用戶的API請求。 在后端,我們只需要在我們的方法中添加一個User
參數,並檢查用戶是否已登錄。據我所知,此用戶參數由App Engine根據我們的請求的Authorization
標頭生成。 ( 可能需要一些確認 )
現在,有一些我不確定理解的東西,並沒有在這個MOOC上得到很好的解釋。
現在,我想知道這是否與Google之外的其他OAuth方案兼容? 那么,如果我想實現Facebook身份驗證,我會簡單地傳遞facebook訪問令牌嗎?
根據我搜索的內容,在Android上使用Facebook SDK會讓我能夠生成一個用戶訪問令牌,用於識別我的用戶到Facebook 。 將它發送到我的后端后,我想檢查它與Facebook的有效性,如果它有效,請為我的應用程序創建一個新用戶。 現在,我還想生成一個新標記,用於標識我的應用程序的用戶。 我需要做什么?
您可以為端點提供自己的身份驗證器,注冊用戶將通過身份驗證器獲取https://developers.google.com/appengine/docs/java/endpoints/javadoc/com/google/api/server/spi/config/ Authenticator.html 。
Facebook憑證可以通過標頭發送,例如Authorization標頭,它可以通過HttpServletRequest從后端訪問,您可以在Authenticator.authenticate方法中處理。
例如。
// Custom Authenticator class
public class MyAuthenticator implements Authenticator {
@Override
public User authenticate(HttpServletRequest request) {
String token = request.getHeader("Authorization");
if (token != null) {
String user = authenticateFacebook(token); // apply your Facebook auth.
if (user != null) {
return new User(user);
}
}
return null;
}
}
// Endpoints class.
@Api(name = "example", authenticators = {MyAuthenticator.class})
public class MyEndpoints {
public Container getThing(User user) {
Container c = new Container();
if (user != null) {
c.email = user.getEmail();
}
return c;
}
public class Container {
public String email;
public String extraData;
}
}
當我嘗試你的例子時,我總是得到一個:java.lang.NullPointerException:必須指定authDomain。 但是我無法在User對象上設置authDomain。 有任何想法嗎?
在版本1.9.22中
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.