2015-10-28 45 views
0

我正在嘗試使用Google OAuth登錄&註冊我的Web服務器應用程序。 這是我所引用的頁面:https://developers.google.com/identity/sign-in/web/backend-auth,但我堅持使用Google Client API,即文檔中下面提到的TokenVerifier。我試圖找到一些例子,但我找不到一個例子,因爲我不知道如何處理樣例顯示的方法中的參數。Google Oauth - TokenVerifier如何使用?

import com.google.api.client.googleapis.auth.oauth2.GoogleIdToken; 
import com.google.api.client.googleapis.auth.oauth2.GoogleIdToken.Payload; 
import com.google.api.client.googleapis.auth.oauth2.GoogleIdTokenVerifier; 

... 

GoogleIdTokenVerifier verifier = new GoogleIdTokenVerifier.Builder(transport, jsonFactory) 
.setAudience(Arrays.asList(CLIENT_ID)) 
.build(); 

// (Receive idTokenString by HTTPS POST) 

GoogleIdToken idToken = verifier.verify(idTokenString); 
if (idToken != null) { 
    Payload payload = idToken.getPayload(); 
    if (payload.getHostedDomain().equals(APPS_DOMAIN_NAME) 
    // If multiple clients access the backend server: 
    && Arrays.asList(ANDROID_CLIENT_ID, IOS_CLIENT_ID).contains(payload.getAuthorizedParty())) { 
System.out.println("User ID: " + payload.getSubject()); 
    } else { 
System.out.println("Invalid ID token."); 
    } 
} else { 
System.out.println("Invalid ID token."); 
} 

例如,我知道這些CLIENT_ID,ANDROID_CLIENT_ID,IOS_CLIENT_ID參數示例代碼(在參考頁)的意思,但服務器只接收id_token,這基本上是一個字符串文本。 (這是由谷歌API在客戶端,JavaScript)

所以,我沒有這些參數值從客戶端傳遞到服務器。我知道谷歌顯示另一種方式:tokeninfo端點,但他們提到,它只有100用戶/月只。 (如果我正確翻譯了它)但是,對於tokeninfo端點方式,它們返回包含客戶端ID的JSON文件,我認爲這將是我之前提到的參數的值,但我不想使用該令牌信息端點方法。

所以,我的問題是,我怎樣才能得到正確的參數值的示例代碼,顯示在谷歌文檔頁面?我只接收來自客戶端的id_token值。

回答

0

ANDROID_CLIENT_ID或IOS_CLIENT_ID應該在服務器代碼中硬編碼(在配置文件中)。

本質上說,你的服務器在請求中獲得一個id_token,你需要確認它是否適用於你的應用或服務器,方法是檢查那裏的觀衆並確保它與你期望的值相符。

+0

對不起,延遲迴復。如果我的應用程序只期望基於Web的用戶呢?只需使用網絡瀏覽器登錄即使設備也不同。 –