簡體   English   中英

Google Cloud Endpoints和用戶身份驗證

[英]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。 有任何想法嗎?

更新:已連接到此錯誤https://code.google.com/p/googleappengine/issues/detail?id=12060&q=endpoints&colspec=ID%20Type%20Component%20Status%20Stars%20Summary%20Language%20Priority%20Owner% 20Log

在版本1.9.22中

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM