Iniciar sesión en múltiples usuarios finales y emisores
The updated login API supports multiple D1Task instances and multiple issuer access tokens.
This is useful when one issuer application manages several issuers or several consumer IDs.
Key behaviors:
Log in once with all relevant issuer access tokens.
Use any configured
D1Taskinstance after login without authenticating again.
class D1Task {
public void login(
@NonNull final List<byte[]> issuerTokens,
@NonNull final Callback<Void> callback
);
}class D1Task {
public func login(_ issuerTokens: inout [Data], completion: @escaping (D1Error?) -> Void)
}Configure multiple D1Task instances
Create one D1Task instance per issuer and consumer combination.
// --- Placeholders you already have in your app / DI ---
Activity activity = myActivity;/* your Activity */;
OEMPayType oemPayType = OEMPayType.GOOGLE_PAY;/* e.g., OEMPayType.GOOGLE_PAY or SAMSUNG_PAY */;
String samsungServiceId = "serviceID";/* your Samsung Pay service ID or "" if not used */;
String visaClientAppId = "clientID"; /* your Visa client app ID or "" if not used */;
// --- D1Task declarations ---
D1Task d1Task1 = null; // Uses ISSUER_ID_1 issuerToken with CONSUMER_ID_1
D1Task d1Task2 = null; // Uses ISSUER_ID_1 issuerToken with CONSUMER_ID_2
D1Task d1Task3 = null; // Uses ISSUER_ID_2 issuerToken with CONSUMER_ID_3
// --- Consumer IDs ---
final String consumerID1 = "CONSUMER_ID_1";
final String consumerID2 = "CONSUMER_ID_2";
final String consumerID3 = "CONSUMER_ID_3";
// --- Build common per-task config params ---
D1Params cardCfg1 = ConfigParams.buildConfigCard(activity, oemPayType, samsungServiceId, visaClientAppId);
D1Params cardCfg2 = ConfigParams.buildConfigCard(activity, oemPayType, samsungServiceId, visaClientAppId);
D1Params cardCfg3 = ConfigParams.buildConfigCard(activity, oemPayType, samsungServiceId, visaClientAppId);
// --- Configure d1Task1 ---
D1Params coreCfg1 = ConfigParams.buildConfigCore(consumerID1);
d1Task1.configure(new D1Task.ConfigCallback<Void>() {
@Override
public void onSuccess(Void ignore) {
// configured successfully for consumerID1
}
@Override
public void onError(@NonNull List<D1Exception> exceptions) {
for (D1Exception ex : exceptions) {
// Handle errors as per "D1 SDK Integration – Error Management"
// e.g., log/route by ex.getCode(), ex.getMessage()
}
}
}, coreCfg1, cardCfg1);
// --- Configure d1Task2 ---
D1Params coreCfg2 = ConfigParams.buildConfigCore(consumerID2);
d1Task2.configure(new D1Task.ConfigCallback<Void>() {
@Override
public void onSuccess(Void ignore) {
// configured successfully for consumerID2
}
@Override
public void onError(@NonNull List<D1Exception> exceptions) {
for (D1Exception ex : exceptions) {
// Handle errors
}
}
}, coreCfg2, cardCfg2);
// --- Configure d1Task3 ---
D1Params coreCfg3 = ConfigParams.buildConfigCore(consumerID3);
d1Task3.configure(new D1Task.ConfigCallback<Void>() {
@Override
public void onSuccess(Void ignore) {
// configured successfully for consumerID3
}
@Override
public void onError(@NonNull List<D1Exception> exceptions) {
for (D1Exception ex : exceptions) {
// Handle errors
}
}
}, coreCfg3, cardCfg3);Log in with multiple issuer access tokens
The sub claim of an issuer access token can contain multiple consumer IDs.
When present, separate the consumer IDs with spaces.
Example issuer access tokens:
The first issuer access token for ISSUER_ID_1 includes CONSUMER_ID_1 and CONSUMER_ID_2.
The second issuer access token for ISSUER_ID_2 includes CONSUMER_ID_3.
You can call the login API from any previously created D1Task instance. After that, subsequent operations can continue without another login.
Invalidate all issuer access tokens
To invalidate all tokens for all configured D1Task instances, use SDK logout.
Última actualización
¿Te fue útil?