本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
將谷歌設置為身份池 IdP
Amazon Cognito 可整合 Google,為您的行動應用程式使用者提供聯合身分驗證。本節說明如何使用 Google 做為 IdP 來註冊及設定您的應用程式。
Android
注意
如果您的應用程式使用 Google 並且將可在多個行動平台上使用,則應將其設定為 OpenID Connect 供應商。將所有建立的用戶端 ID 新增為其他對象值,以便達到更佳的整合。若要進一步了解 Google 的跨用戶端身分模型,請參閱跨用戶端身分
設定 Google
若要啟用適用於 Android 的 Google 登入,請為應用程式建立 Google 開發人員主控台專案。
-
前往 Google 開發人員主控台
,並建立新的專案。 -
選擇 APIs & Services (API 與服務),然後選擇 OAuth consent screen (OAuth 同意畫面)。自訂當 Google 要求使用者同意將其設定檔資料與您的應用程式共享時,Google 要向使用者顯示的資訊。
-
選擇 Credentials (憑證),然後選擇 Create credentials (建立憑證)。選擇 OAuth client ID (OAuth 用戶端 ID)。選取 Android 做為 Application type (應用程式類型)。為開發應用程式所在的每個平台建立單獨的用戶端 ID。
-
從 Credentials (憑證),選擇 Manage service accounts (管理服務帳戶)。選擇 Create service account (建立服務帳戶)。輸入您的服務帳戶詳細資訊,然後選擇 Create and continue (建立並繼續)。
-
將服務帳戶存取權授與您的專案。根據您應用程式的需求將服務帳戶的存取權授與使用者。
-
選擇您的新服務帳戶,選擇 Keys (金鑰) 索引標籤,然後選擇 Add key (新增金鑰)。建立並下載新的 JSON 金鑰。
如需使用 Google 開發人員主控台的詳細資訊,請參閱 Google Cloud 文件中的建立與管理專案
有關如何將 Google 集成到您的 Android 應用程序中的更多信息,請參閱 Google 身份說明文檔中的使用 Google 登錄對用戶進行
若要新增 Google 身分提供者 (IdP)
-
從 Amazon Cognito 主控台
選擇 身分池。選取身分池。 -
選擇 使用者存取權 索引標籤。
-
選取 新增身分供應商。
-
選擇 Google。
-
輸入您在 Google Cloud Platform
建立的 OAuth 專案 用戶端 ID。如需詳細資訊,請參閱《Google Cloud Platform 主控台幫助》中的設定 OAuth 2.0 。 -
若要設定 Amazon Cognito 向已通過此提供者進行身分驗證的使用者發布憑證時的角色,請設定 角色設定。
-
您可以為該 IdP 使用者指派設定 已驗證角色 時的 預設角色,或您可以 選擇具有規則的角色。
-
如果您選擇 使用規則選擇角色,請輸入使用者身分驗證的 宣告 來源、比較宣告的 操作員、導致符合角色選擇的 值,以及當符合 角色指派 時您要指派的 角色。選取 新增另一項 以根據不同的條件建立其他規則。
-
選擇 角色解析。當您的使用者宣告與您的規則不符時,您可以拒絕憑證或向 已驗證角色 發出憑證。
-
-
-
若要變更透過此提供者驗證使用者,Amazon Cognito 發布憑證時指派的主要索引標籤,請設定 存取控制的屬性。
-
若不套用主要索引標籤,請選擇 非作用中。
-
若要根據
sub
和aud
宣告套用主要索引標籤,請選擇 使用預設對應。 -
若要建立您自己的自訂屬性結構描述至主要索引標籤,請選擇 使用自訂對應。然後,輸入您要從每個 宣告 中獲取的 標籤金鑰,顯示於索引標籤當中。
-
-
選取儲存變更。
使用 Google
若要在您的應用程式中啟用以 Google 登入,請遵循適用於 Android 的 Google 說明文件
下列範例程式碼說明如何從 Google Play 服務擷取身分驗證權杖:
GooglePlayServicesUtil.isGooglePlayServicesAvailable(getApplicationContext()); AccountManager am = AccountManager.get(this); Account[] accounts = am.getAccountsByType(GoogleAuthUtil.GOOGLE_ACCOUNT_TYPE); String token = GoogleAuthUtil.getToken(getApplicationContext(), accounts[0].name, "audience:server:client_id:YOUR_GOOGLE_CLIENT_ID"); Map<String, String> logins = new HashMap<String, String>(); logins.put("accounts.google.com", token); credentialsProvider.setLogins(logins);
iOS - Objective-C
注意
如果您的應用程式使用 Google 並且可在多個行動平台上使用,則應將 Google 設定為 OpenID Connect 供應商。將所有建立的用戶端 ID 新增為其他對象值,以便達到更佳的整合。若要進一步了解 Google 的跨用戶端身分模型,請參閱跨用戶端身分
設定 Google
若要啟用適用於 iOS 的 Google 登入,請為應用程式建立 Google 開發人員主控台專案。
-
前往 Google 開發人員主控台
,並建立新的專案。 -
選擇 APIs & Services (API 與服務),然後選擇 OAuth consent screen (OAuth 同意畫面)。自訂當 Google 要求使用者同意將其設定檔資料與您的應用程式共享時,Google 要向使用者顯示的資訊。
-
選擇 Credentials (憑證),然後選擇 Create credentials (建立憑證)。選擇 OAuth client ID (OAuth 用戶端 ID)。選取 iOS 做為 Application type (應用程式類型)。為開發應用程式所在的每個平台建立單獨的用戶端 ID。
-
從 Credentials (憑證),選擇 Manage service accounts (管理服務帳戶)。選擇 Create service account (建立服務帳戶)。輸入您的服務帳戶詳細資訊,然後選擇 Create and continue (建立並繼續)。
-
將您專案的存取權授與服務帳戶。根據您應用程式的需求將服務帳戶的存取權授與使用者。
-
選擇您的新服務帳戶。選擇 Keys (金鑰) 索引標籤,然後選擇 Add key (新增金鑰)。建立並下載新的 JSON 金鑰。
如需使用 Google 開發人員主控台的詳細資訊,請參閱 Google Cloud 文件中的建立與管理專案
如需如何將 Google 整合到您 iOS 應用程式的詳細資訊,請參閱 Google Identity 文件中的適用於 iOS 的 Google 登入
若要新增 Google 身分提供者 (IdP)
-
從 Amazon Cognito 主控台
選擇 身分池。選取身分池。 -
選擇 使用者存取權 索引標籤。
-
選取 新增身分供應商。
-
選擇 Google。
-
輸入您在 Google Cloud Platform
建立的 OAuth 專案 用戶端 ID。如需詳細資訊,請參閱《Google Cloud Platform 主控台幫助》中的設定 OAuth 2.0 。 -
若要設定 Amazon Cognito 向已通過此提供者進行身分驗證的使用者發布憑證時的角色,請設定 角色設定。
-
您可以為該 IdP 使用者指派設定 已驗證角色 時的 預設角色,或您可以 選擇具有規則的角色。
-
如果您選擇 使用規則選擇角色,請輸入使用者身分驗證的 宣告 來源、比較宣告的 操作員、導致符合角色選擇的 值,以及當符合 角色指派 時您要指派的 角色。選取 新增另一項 以根據不同的條件建立其他規則。
-
選擇 角色解析。當您的使用者宣告與您的規則不符時,您可以拒絕憑證或向 已驗證角色 發出憑證。
-
-
-
若要變更透過此提供者驗證使用者,Amazon Cognito 發布憑證時指派的主要索引標籤,請設定 存取控制的屬性。
-
若不套用主要索引標籤,請選擇 非作用中。
-
若要根據
sub
和aud
宣告套用主要索引標籤,請選擇 使用預設對應。 -
若要建立您自己的自訂屬性結構描述至主要索引標籤,請選擇 使用自訂對應。然後,輸入您要從每個 宣告 中獲取的 標籤金鑰,顯示於索引標籤當中。
-
-
選取儲存變更。
使用 Google
若要在您的應用程式中啟用以 Google 登入,請遵循適用於 iOS 的 Google 說明文件
身分驗證成功會產生包含 id_token
的 GTMOAuth2Authentication
物件,Amazon Cognito 會用其來驗證使用者,並產生唯一識別符:
- (void)finishedWithAuth: (GTMOAuth2Authentication *)auth error: (NSError *) error { NSString *idToken = [auth.parameters objectForKey:@"id_token"]; credentialsProvider.logins = @{ @(AWSCognitoLoginProviderKeyGoogle): idToken }; }
iOS - Swift
注意
如果您的應用程式使用 Google 並且可在多個行動平台上使用,則應將 Google 設定為 OpenID Connect 供應商。將所有建立的用戶端 ID 新增為其他對象值,以便達到更佳的整合。若要進一步了解 Google 的跨用戶端身分模型,請參閱跨用戶端身分
設定 Google
若要啟用適用於 iOS 的 Google 登入,請為應用程式建立 Google 開發人員主控台專案。
-
前往 Google 開發人員主控台
,並建立新的專案。 -
選擇 APIs & Services (API 與服務),然後選擇 OAuth consent screen (OAuth 同意畫面)。自訂當 Google 要求使用者同意將其設定檔資料與您的應用程式共享時,Google 要向使用者顯示的資訊。
-
選擇 Credentials (憑證),然後選擇 Create credentials (建立憑證)。選擇 OAuth client ID (OAuth 用戶端 ID)。選取 iOS 做為 Application type (應用程式類型)。為開發應用程式所在的每個平台建立單獨的用戶端 ID。
-
從 Credentials (憑證),選擇 Manage service accounts (管理服務帳戶)。選擇 Create service account (建立服務帳戶)。輸入您的服務帳戶詳細資訊,然後選擇 Create and continue (建立並繼續)。
-
將您專案的存取權授與服務帳戶。根據您應用程式的需求將服務帳戶的存取權授與使用者。
-
選擇您的新服務帳戶,選擇 Keys (金鑰) 索引標籤,然後選擇 Add key (新增金鑰)。建立並下載新的 JSON 金鑰。
如需使用 Google 開發人員主控台的詳細資訊,請參閱 Google Cloud 文件中的建立與管理專案
如需如何將 Google 整合到您 iOS 應用程式的詳細資訊,請參閱 Google Identity 文件中的適用於 iOS 的 Google 登入
從 Amazon Cognito 主控台首頁
在 Amazon Cognito 主控台中設定外部供應商
-
針對要啟用 Google 做為外部供應商的身分集區,選擇其名稱。該身分集區的 Dashboard (儀表板) 頁面隨即出現。
-
在 Dashboard (儀表板) 頁面右上角,選擇 Edit identity pool (編輯身分集區)。Edit identity pool (編輯身分集區) 頁面隨即出現。
-
向下捲動,然後選擇 Authentication providers (身分驗證供應商) 以展開該區段。
-
選擇 Google 索引標籤。
-
選擇 Unlock (解除鎖定)。
-
輸入您從 Google 取得的 Google 用戶端 ID,然後選擇 Save Changes (儲存變更)。
使用 Google
若要在您的應用程式中啟用以 Google 登入,請遵循適用於 iOS 的 Google 說明文件
成功的身分驗證會產生 GTMOAuth2Authentication
物件,該物件包含 id_token
。Amazon Cognito 會使用此權杖來驗證使用者身分,並產生唯一識別符。
func finishedWithAuth(auth: GTMOAuth2Authentication!, error: NSError!) { if error != nil { print(error.localizedDescription) } else { let idToken = auth.parameters.objectForKey("id_token") credentialsProvider.logins = [AWSCognitoLoginProviderKey.Google.rawValue: idToken!] } }
JavaScript
注意
如果您的應用程式使用 Google 並可在多個行動平台上使用,則應將 Google 設定為 OpenID Connect 供應商。將所有建立的用戶端 ID 新增為其他對象值,以便達到更佳的整合。若要進一步了解 Google 的跨用戶端身分模型,請參閱跨用戶端身分
設定 Google
要為 JavaScript Web 應用程序啟用 Google 登錄,請為您的應用程序創建一個 Google 開發人員控制台項目。
-
前往 Google 開發人員主控台
,並建立新的專案。 -
選擇 APIs & Services (API 與服務),然後選擇 OAuth consent screen (OAuth 同意畫面)。自訂當 Google 要求使用者同意將其設定檔資料與您的應用程式共享時,Google 要向使用者顯示的資訊。
-
選擇 Credentials (憑證),然後選擇 Create credentials (建立憑證)。選擇 OAuth client ID (OAuth 用戶端 ID)。選取 Web application (Web 應用程式) 做為 Application type (應用程式類型)。為開發應用程式所在的每個平台建立單獨的用戶端 ID。
-
從 Credentials (憑證),選擇 Manage service accounts (管理服務帳戶)。選擇 Create service account (建立服務帳戶)。輸入您的服務帳戶詳細資訊,然後選擇 Create and continue (建立並繼續)。
-
將您專案的存取權授與服務帳戶。根據您應用程式的需求將服務帳戶的存取權授與使用者。
-
選擇您的新服務帳戶,選擇 Keys (金鑰) 索引標籤,然後選擇 Add key (新增金鑰)。建立並下載新的 JSON 金鑰。
如需使用 Google 開發人員主控台的詳細資訊,請參閱 Google Cloud 文件中的建立與管理專案
如需如何將 Google 整合到您 Web 應用程式的詳細資訊,請參閱 Google Identity 文件中的使用 Google 登入
在 Amazon Cognito 主控台中設定外部供應商
若要新增 Google 身分提供者 (IdP)
-
從 Amazon Cognito 主控台
選擇 身分池。選取身分池。 -
選擇 使用者存取權 索引標籤。
-
選取 新增身分供應商。
-
選擇 Google。
-
輸入您在 Google Cloud Platform
建立的 OAuth 專案 用戶端 ID。如需詳細資訊,請參閱《Google Cloud Platform 主控台幫助》中的設定 OAuth 2.0 。 -
若要設定 Amazon Cognito 向已通過此提供者進行身分驗證的使用者發布憑證時的角色,請設定 角色設定。
-
您可以為該 IdP 使用者指派設定 已驗證角色 時的 預設角色,或您可以 選擇具有規則的角色。
-
如果您選擇 使用規則選擇角色,請輸入使用者身分驗證的 宣告 來源、比較宣告的 操作員、導致符合角色選擇的 值,以及當符合 角色指派 時您要指派的 角色。選取 新增另一項 以根據不同的條件建立其他規則。
-
選擇 角色解析。當您的使用者宣告與您的規則不符時,您可以拒絕憑證或向 已驗證角色 發出憑證。
-
-
-
若要變更透過此提供者驗證使用者,Amazon Cognito 發布憑證時指派的主要索引標籤,請設定 存取控制的屬性。
-
若不套用主要索引標籤,請選擇 非作用中。
-
若要根據
sub
和aud
宣告套用主要索引標籤,請選擇 使用預設對應。 -
若要建立您自己的自訂屬性結構描述至主要索引標籤,請選擇 使用自訂對應。然後,輸入您要從每個 宣告 中獲取的 標籤金鑰,顯示於索引標籤當中。
-
-
選取儲存變更。
使用 Google
若要在您的應用程式中啟用以 Google 登入,請遵循適用於 Web 的 Google 說明文件
身分驗證成功會產生包含 id_token
的回應物件,Amazon Cognito 會用其來驗證使用者,並產生唯一識別符:
function signinCallback(authResult) { if (authResult['status']['signed_in']) { // Add the Google access token to the Amazon Cognito credentials login map. AWS.config.credentials = new AWS.CognitoIdentityCredentials({ IdentityPoolId: 'IDENTITY_POOL_ID', Logins: { 'accounts.google.com': authResult['id_token'] } }); // Obtain AWS credentials AWS.config.credentials.get(function(){ // Access AWS resources here. }); } }
Unity
設定 Google
若要啟用適用於 Unity 應用程式的 Google 登入,您必須為應用程式建立 Google 開發人員主控台專案。
-
前往 Google 開發人員主控台
,並建立新的專案。 -
選擇 APIs & Services (API 與服務),然後選擇 OAuth consent screen (OAuth 同意畫面)。自訂當 Google 要求使用者同意將其設定檔資料與您的應用程式共享時,Google 要向使用者顯示的資訊。
-
選擇 Credentials (憑證),然後選擇 Create credentials (建立憑證)。選擇 OAuth client ID (OAuth 用戶端 ID)。選取 Web application (Web 應用程式) 做為 Application type (應用程式類型)。為開發應用程式所在的每個平台建立單獨的用戶端 ID。
-
若為 Unity,則針對 Android 建立一個額外的 OAuth client ID (OAuth 用戶端 ID),並針對 iOS 建立另外一個。
-
從 Credentials (憑證),選擇 Manage service accounts (管理服務帳戶)。選擇 Create service account (建立服務帳戶)。輸入您的服務帳戶詳細資訊,然後選擇 Create and continue (建立並繼續)。
-
將您專案的存取權授與服務帳戶。根據您應用程式的需求將服務帳戶的存取權授與使用者。
-
選擇您的新服務帳戶,選擇 Keys (金鑰) 索引標籤,然後選擇 Add key (新增金鑰)。建立並下載新的 JSON 金鑰。
如需使用 Google 開發人員主控台的詳細資訊,請參閱 Google Cloud 文件中的建立與管理專案
在 IAM 主控台中建立 OpenID 供應商
-
在 IAM 主控台中建立 OpenID 供應商 如需有關如何設定 OpenID 供應商的資訊,請參閱使用 OpenID Connect 身分提供者。
-
當提示您輸入供應商 URL 時,請輸入
"https://accounts.google.com"
。 -
當提示您在 Audience (對象) 欄位中輸入值時,請輸入您在前面步驟中建立的三個用戶端 ID 之一。
-
選擇供應商名稱,並使用其他兩個用戶端 ID 再新增其他兩個對象。
在 Amazon Cognito 主控台中設定外部供應商
從 Amazon Cognito 主控台首頁
若要新增 Google 身分提供者 (IdP)
-
從 Amazon Cognito 主控台
選擇 身分池。選取身分池。 -
選擇 使用者存取權 索引標籤。
-
選取 新增身分供應商。
-
選擇 Google。
-
輸入您在 Google Cloud Platform
建立的 OAuth 專案 用戶端 ID。如需詳細資訊,請參閱《Google Cloud Platform 主控台幫助》中的設定 OAuth 2.0 。 -
若要設定 Amazon Cognito 向已通過此提供者進行身分驗證的使用者發布憑證時的角色,請設定 角色設定。
-
您可以為該 IdP 使用者指派設定 已驗證角色 時的 預設角色,或您可以 選擇具有規則的角色。
-
如果您選擇 使用規則選擇角色,請輸入使用者身分驗證的 宣告 來源、比較宣告的 操作員、導致符合角色選擇的 值,以及當符合 角色指派 時您要指派的 角色。選取 新增另一項 以根據不同的條件建立其他規則。
-
選擇 角色解析。當您的使用者宣告與您的規則不符時,您可以拒絕憑證或向 已驗證角色 發出憑證。
-
-
-
若要變更透過此提供者驗證使用者,Amazon Cognito 發布憑證時指派的主要索引標籤,請設定 存取控制的屬性。
-
若不套用主要索引標籤,請選擇 非作用中。
-
若要根據
sub
和aud
宣告套用主要索引標籤,請選擇 使用預設對應。 -
若要建立您自己的自訂屬性結構描述至主要索引標籤,請選擇 使用自訂對應。然後,輸入您要從每個 宣告 中獲取的 標籤金鑰,顯示於索引標籤當中。
-
-
選取儲存變更。
安裝 Unity Google 外掛程式
-
將 Google Play Games plugin for Unity
新增至您的 Unity 專案。 -
在 Unity 中,從 Windows 選單使用適用於 Android 和 iOS 平台的三個 ID 來設定外掛程式。
使用 Google
下列範例程式碼說明如何從 Google Play 服務擷取身分驗證權杖:
void Start() { PlayGamesClientConfiguration config = new PlayGamesClientConfiguration.Builder().Build(); PlayGamesPlatform.InitializeInstance(config); PlayGamesPlatform.DebugLogEnabled = true; PlayGamesPlatform.Activate(); Social.localUser.Authenticate(GoogleLoginCallback); } void GoogleLoginCallback(bool success) { if (success) { string token = PlayGamesPlatform.Instance.GetIdToken(); credentials.AddLogin("accounts.google.com", token); } else { Debug.LogError("Google login failed. If you are not running in an actual Android/iOS device, this is expected."); } }
Xamarin
注意
Amazon Cognito 不是原本就在 Xamarin 平台上支援 Google。整合目前需要使用 Web 檢視畫面來進行瀏覽器登入流程。若要了解 Google 整合如何與其他軟體開發套件搭配使用,請選取其他平台。
若要在您的應用程式中啟用以 Google 登入,請驗證您的使用者,並從其取得 OpenID Connec 權杖。Amazon Cognito 會使用此權杖來產生與 Amazon Cognito 身分相關聯的唯一使用者識別符。很可惜,適用於 Xamarin 的 Google 開發套件不能讓您擷取 OpenID Connect 權杖,因此請使用替代用戶端,或是使用 Web 檢視中的 Web 流程。
取得權杖之後,您可以將其設定在您的 CognitoAWSCredentials
中:
credentials.AddLogin("accounts.google.com", token);
注意
如果您的應用程式使用 Google 並可在多個行動平台上使用,則應將 Google 設定為 OpenID Connect 供應商。將所有建立的用戶端 ID 新增為其他對象值,以便達到更佳的整合。若要進一步了解 Google 的跨用戶端身分模型,請參閱跨用戶端身分