(舊版)透過動態使用者端註冊的Android SDK android-sdk-with-dynamic-client-registration
簡介 Intro
適用於Android的Android AccessEnabler SDK已修改為在不使用工作階段Cookie的情況下啟用驗證。 由於越來越多的瀏覽器限制對Cookie的存取,因此需要使用其他方法來允許驗證。
針對Android,使用Chrome自訂標籤會限制從其他應用程式存取Cookie。
Android SDK 3.0.0 簡介:
- 動態使用者端註冊會根據已簽署的請求者ID和工作階段Cookie驗證,取代目前的應用程式註冊機制
- 驗證流程的Chrome自訂標籤
動態使用者端註冊 DCR
Android SDK v3.0+將使用動態使用者端註冊概述中定義的動態使用者端註冊程式。
功能示範 Demo
請觀看此網路研討會,其中提供更多功能內容,並包含如何使用TVE儀表板管理軟體陳述式以及如何使用Adobe提供的示範應用程式測試產生的陳述式的示範,該示範應用程式是Android SDK的一部分。
API變更 API
Factory.getInstance
描述: 將存取啟用程式物件具現化。 每個應用程式執行個體應該有單一Access Enabler執行個體。
擲回AccessEnablerException
可用性: v3.0+
引數:
- appContext: Android應用程式內容
- softwareStatement:從TVE Dashboard取得的值,或如果字串中設定了「software_statement」,則為 null
- redirectUrl :唯一的url,在TVE儀表板中明確新增的網域之一,或是如果「redirect_uri」設定在strings.xml中,則為 null
注意:無效的softwareStatement或redirectUrl將導致應用程式無法初始化AccessEnabler或註冊Adobe Pass驗證和授權的應用程式
注意: strings.xml中的redirectUrl引數或redirect_uri應為應用程式在TVE儀表板中以相反順序新增的網域值(例如:若為TVE儀表板中新增的網域「adobe.com」,redirectUrl應為「com.adobe」。
setRequestor
描述: 已建立通道的識別。 每個管道在為Adobe Pass驗證系統註冊Adobe時會獲得一個唯一的ID。 處理SSO和遠端權杖時,驗證狀態會在應用程式於背景時變更,當應用程式進入前景時,可再次呼叫setRequestor以便與系統狀態同步(如果SSO已啟用,會擷取遠端權杖,如果同時發生登出,則會刪除本機權杖)。
伺服器回應包含MVPD清單,以及附加至通道識別的一些設定資訊。 伺服器回應由Access Enabler程式碼內部使用。 只有作業的狀態(即SUCCESS/FAIL)會透過setRequestorComplete()回呼顯示給應用程式。
如果未使用 url 引數,則產生的網路呼叫會鎖定預設服務提供者URL:Adobe發行/生產環境。
如果提供 url 引數的值,則產生的網路呼叫會鎖定 url 引數中提供的所有URL。 所有設定請求都在不同的執行緒中同時觸發。 第一個回應者在編譯MVPD清單時優先。 對於清單中的每個MVPD,「存取啟用程式」會記住關聯服務提供者的URL。 所有後續的軟體權利檔案請求都會導向在設定階段與目標MVPD配對之服務提供者相關聯的URL。
public void setRequestor(String requestorId)
可用性: v3.0+
public void setRequestor(String requestorId, ArrayList<String> urls)
可用性: v3.0+
引數:
- requestorID:與頻道關聯的唯一識別碼。 首次向Adobe Pass驗證服務註冊時,請將Adobe指派的唯一ID傳遞至您的網站。
- url:選用引數;預設會使用Adobe服務提供者http://sp.auth.adobe.com/。 此陣列可讓您為Adobe提供的驗證和授權服務指定端點(不同的執行個體可能會用於偵錯)。 您可以使用此專案來指定多個Adobe Pass驗證服務提供者執行個體。 若這麼做,MVPD清單將由所有服務提供者的端點組成。 每個MVPD都與最快的服務提供者相關聯;也就是說,第一個回應並支援該MVPD的提供者。
已棄用:
- signedRequestorID:以您的私密金鑰數位簽署的請求者ID復本。 。
已觸發 回呼: setRequestorComplete()
登出
描述: 使用此方法來起始登出流程。 登出是一系列HTTP重新導向作業的結果,因為使用者需要同時從Adobe Pass驗證伺服器和MVPD伺服器登出。 因此,此流程將開啟ChromeCustomTab視窗以執行登出。
可用性: v3.0+
引數: 無
已觸發 回呼: setAuthenticationStatus()
程式設計師實作流程 Progr
1. 註冊應用程式
a.從Adobe Pass ( TVE控制面板)取得software_statement和redirect_uri
b.有兩個選項可將這些值傳遞至Adobe Pass SDK:
在strings.xml中新增:
<string name="software_statement">[softwarestatement value]</string>
<string name="redirect_uri">application_url.com</string>
呼叫AccessEnabler.getInstance(appContext,softwareStatement,
redirectUrl)
2.設定應用程式
a. setRequestor(requestor_id)
SDK將執行下列操作:
-
註冊應用程式:使用 software_statement,SDK將取得 client_id, client_secret, client_id_issued_at, redirect_uris, grant_types。 此資訊會儲存在應用程式的內部儲存中。
-
使用client_id、client_secret和grant_type="client_credentials"取得 access_token。 此access_token將用於SDK對Adobe Pass伺服器進行的每次呼叫
權杖錯誤回應:
- 如果MVPD需要被動驗證,Chrome自訂標籤將會開啟,以使用該MVPD被動執行,並在完成後關閉
b. checkAuthorization()
- true :前往授權
- false :前往選取MVPD
c. getAuthentication : SDK將在呼叫引數中包含 access_token
- 記憶的mvpd :前往setSelectedProvider(mvpd_id)
- 未選取mvpd : displayProviderDialog
- 已選取mvpd :前往setSelectedProvider(mvpd_id)
d. setSelectedprovider
- mvpd_id驗證URL已載入ChromeCustomTabs中
- 登入成功: delegate.setAuthenticationStatus ( SUCCESS )
- 登入已取消:重設MVPD選擇
- URL配置會建立為「adobepass://redirect_uri」,以便在驗證完成時擷取
e. get/checkAuthorization : SDK將在標頭中包含 access_token,作為授權:持有人 access_token
- 如果授權成功,將會進行呼叫以取得
媒體權杖
f.登出:
- SDK將刪除目前請求者的有效Token (由其他應用程式取得而非透過SSO取得的驗證仍有效)
- SDK將開啟Chrome自訂標籤以存取mvpd_id登出端點。 完成後,Chrome自訂標籤將關閉
- URL配置會建立為「adobepass://logout」,以擷取登出完成時的時間
- 登出會觸發sendTrackingData(new Event(EVENT_LOGOUT,USER_NOT_AUTHENTICATED_ERROR)和回呼:setAuthenticationStatus(0,"Logout")
注意: 因為每個呼叫都需要 access_token, 以下可能的錯誤碼已在SDK中處理。