2

我有一個簡單的應用程序,讓用戶畫圖片。有Android,IOS和基於Web的版本。我還讓用戶將他們的照片存儲在我們的App引擎服務器上,我希望他們能夠與其他用戶進行協作。我想使用Google帳戶進行身份驗證以及某些權限方案的基礎。如何使用OAuth 2在App Engine服務器上驗證/驗證Android應用程序?

我不知道如何在Android(或IOS)上驗證/驗證用戶的Google帳戶。我希望有人能幫助或指引我朝着正確的方向前進。以下是我目前瞭解的內容:

在基於Web的客戶端上,我只使用Google-web工具包UserService。但是對於我的應用程序引擎servlet,我不確定我應該使用什麼。目前的servlet有這樣的代碼:

public void doGet(HttpServletRequest request, HttpServletResponse response) 
     throws IOException, ServletException 
{ 
    OAuthService oauth = null; 
    oauth = OAuthServiceFactory.getOAuthService(); 
    User user = oauth.getCurrentUser(); 
    // Do stuff 
} 

在我的Android應用程序,我想我應該這樣做:

1)從的AccountManager

2)調用get帳戶:

accountManager.getAuthToken 
(account, // Account 
"oauth2:https://www.googleapis.com/auth/userinfo.profile",//AUTH Token Type 
null, // Options 
this, // Activity 
new MyAccountsManagerCallBack(), // call-back 
null); // Handler 

這會給我授權令牌。

3)??利潤?

這是我迷路的地方。我是否將此授權令牌作爲明文查詢參數發送到我的應用程序引擎服務器,然後向Web服務器發送請求到userinfo/profile api?這似乎並不安全。

有沒有辦法讓OAuthService的前面的代碼工作?

OAuth 2的示例使用Google任務API,但是我想使用我的應用程序引擎API。我已經使用cookie,webviews,標題等找到了OAuth 1的信息,但OAuth 2沒有任何信息,並且他們都沒有告訴我如何驗證服務器端。

我真的不知道我應該在這裏做什麼。我將不勝感激任何幫助。

回答

0

爲了澄清,這是在App Engine上擔任我的Java Servlet的例子:

public class ServletSecureData extends HttpServlet { 
    @Override 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) 
    throws ServletException, IOException { 
    UserService usersrvc = null;  
    usersrvc = UserServiceFactory.getUserService(); 
    User user = usersrvc.getCurrentUser(); 
    if(user == null) 
     throw new IOException(); 

    Random r = new Random(System.currentTimeMillis()); 
    int num = r.nextInt(10); 
    PrintWriter out = response.getWriter(); 
    out.printf("Security !! %s radioactive man! %d", user.getEmail(), num); 
    out.close(); 
    } 
} 

這個servlet與在web.xml文件中定義的安全約束的保護。我希望能夠使用android客戶端訪問這個servlet。我想,我不得不用的Oauth但事實證明,我需要使用

我根據我的實現開來這個網站的代碼舊的過時服務的ClientLogin:http://blog.notdot.net/2010/05/Authenticating-against-App-Engine-from-an-Android-app

相關問題