diff --git a/docs/getting-started/gs-encryption-decryption.md b/docs/getting-started/gs-encryption-decryption.md index f8912de47..e412889b5 100644 --- a/docs/getting-started/gs-encryption-decryption.md +++ b/docs/getting-started/gs-encryption-decryption.md @@ -355,7 +355,7 @@ public class Uid2Request { + "java -jar Uid2Request-jar-with-dependencies.jar " + "\n\n" + "Example:" + "\n " - + "echo '{\"email\": \"test@example.com\"}' | java -jar Uid2Request-jar-with-dependencies.jar https://prod.uidapi.com/v2/token/generate PRODGwJ0hP19QU4hmpB64Y3fV2dAed8t/mupw3sjN5jNRFzg= wJ0hP19QU4hmpB64Y3fV2dAed8t/mupw3sjN5jNRFzg=" + "\n\n\n" + + "echo '{\"email\": \"test@example.com\"}' | java -jar Uid2Request-jar-with-dependencies.jar https://prod.uidapi.com/v2/token/generate PRODGwJ0hP19QU4hmpB64Y3fV2dAed8t/mupw3sjN5jNRFzg= wJ0hP19QU4hmpB64Y3fV2dAed8t/mupw3sjN5jNRFzg=" + "\n\n\n" + "Refresh Token Usage:" + "\n " + "java -jar Uid2Request-jar-with-dependencies.jar --refresh-token " + "\n\n" diff --git a/docs/getting-started/gs-faqs.md b/docs/getting-started/gs-faqs.md index bc5265674..d9e27b975 100644 --- a/docs/getting-started/gs-faqs.md +++ b/docs/getting-started/gs-faqs.md @@ -118,6 +118,7 @@ The procedure is a little different depending on whether or not you are using an - The hash of `refresh-optout@example.com` as the `email_hash` value. - The `+00000000002` as the `phone` value. - The hash of `+00000000002` as the `phone_hash` value. + 2. Wait until the SDK's [background auto-refresh](../sdks/sdk-ref-javascript.md#background-token-auto-refresh) attempts to refresh the advertising token (this can take several hours) and observe the refresh attempt fail with the `OPTOUT` status. At this point the SDK also clears the first-party cookie. ##### Without SDK: @@ -127,7 +128,9 @@ The procedure is a little different depending on whether or not you are using an - The hash of `refresh-optout@example.com` as the `email_hash` value. - The `+00000000002` as the `phone` value. - The hash of `+00000000002` as the `phone_hash` value. + 2. Store the returned `refresh_token` for use in the following step. + 3. Send a [POST /token/refresh](../endpoints/post-token-refresh.md) request with the `refresh_token` (saved in step 2) as the `token` value.
The body response should be empty, and the `status` value should be set to `optout` because the `refresh-optout@example.com` email and the `+00000000002` phone number always result in a logged-out user. #### What is the uniqueness and rotation policy for UID2 tokens? diff --git a/docs/guides/integration-mobile-client-server.md b/docs/guides/integration-mobile-client-server.md index b59315906..de920129b 100644 --- a/docs/guides/integration-mobile-client-server.md +++ b/docs/guides/integration-mobile-client-server.md @@ -267,7 +267,7 @@ UID2Manager.shared.getAdvertisingToken() -On startup/resumption of the app, if `getAdvertisingToken()` returns `null`, it is time to generate new identity on the server by following the instructions in [Implement Server-Side Token Generation](#implement-server-side-token-generation). Then, pass the result into the mobile app’s UID2Manager again: see [Configure the UID2 mobile SDK](#configure-the-uid2-mobile-sdk). +On startup/resumption of the app, if `getAdvertisingToken()` returns `null`, it is time to generate new identity on the server by following the instructions in [Implement Server-Side Token Generation](#implement-server-side-token-generation). Then, pass the result into the mobile app’s UID2Manager again: see [Configure the UID2 Mobile SDK](#configure-the-uid2-mobile-sdk). ## Enable Logging diff --git a/docs/intro.md b/docs/intro.md index 93ceab8c4..e504519e7 100644 --- a/docs/intro.md +++ b/docs/intro.md @@ -38,13 +38,13 @@ The UID2 framework is built on the following technical principles: - **Distributed integration**: Multiple certified integration paths provide options for publishers, advertisers, and third-party data providers to manage and exchange UID2 tokens. -- **Decentralized storage**: The framework does not have a centralized storage for personal data (DII) mappings. All participants maintain only their own data. +- **Decentralized storage**: The framework does not have centralized storage for personal data (DII) mappings. All participants maintain only their own data. - **Lean infrastructure**: The UID2 system is light and inexpensive to operate. - **Internet scale**: The UID2 infrastructure can scale to address the continuously increasing needs of [participants](#participants) and to meet the performance demands of specific geographic regions. -- **Self-reliant**: UID2 does not rely on external services for processing of real-time bidding (RTB) data. +- **Self-reliant**: UID2 does not rely on external services for the processing of real-time bidding (RTB) data. ## Elements of the UID2 Infrastructure @@ -62,7 +62,7 @@ UID2 is a deterministic ID that is based on salt value to create the raw UID2. The process that creates the raw UID2 is designed to create a secure, opaque value that can be stored by advertisers, third-party data providers, and demand-side platforms (DSPs).
Raw UID2s are case sensitive.
Example: A request for the raw UID2 for the fictitious email address `user@example.com` resulted in this value: `E2dxEv3oMBzNHPw5iUVmwH2Hv+60D4AXYe+2ge9U0No=`. | -| **UID2 Token (Advertising Token)** | Yes | An encrypted form of a raw UID2. UID2 tokens are generated from hashed or unhashed email addresses or phone numbers that are converted to raw UID2s and then encrypted to help ensure protection in the bidstream.
UID2 tokens are designed to be used by publishers or publisher service providers. Supply-side platforms (SSPs) pass UID2 tokens in the bidstream and DSPs decrypt them at bid request time.
UID2 tokens are case sensitive.
Example: A request for a UID2 token for the fictitious email address `user@example.com` resulted in this value: `A4AAAAs6ZBcEbwAPoFhVV7CNW5W-4R-9TKDNL4RS0ctkw1U-IkNOXSnWczvwOMgCQaXHPf3Gd1o1W6IBmlZBFIloM67XOsOgwP5jUrQrclGkq1zBJJUJmOFTe6sJJA7pM1GP9gLd-hz5did6baZvcKd8DXkUYM-WALRZFnzHivu_1YEsC_CeXNdMexKDN7EwSQ6L5eZvOd1F1RkF_nLy_J0twg`. | +| **UID2 Token (Advertising Token)** | Yes | An encrypted form of a raw UID2. UID2 tokens are generated from hashed or unhashed email addresses or phone numbers that are converted to raw UID2s and then encrypted to help ensure protection in the bidstream.
UID2 tokens are designed to be used by publishers or publisher service providers. Supply-side platforms (SSPs) pass UID2 tokens in the bidstream and DSPs decrypt them at bid request time.
UID2 tokens are case sensitive.
Example: A request for a UID2 token for the fictitious email address `user@example.com` resulted in this value: `A4AAAAs6ZBcEbwAPoFhVV7CNW5W-4R-9TKDNL4RS0ctkw1U-IkNOXSnWczvwOMgCQaXHPf3Gd1o1W6IBmlZBFIloM67XOsOgwP5jUrQrclGkq1zBJJUJmOFTe6sJJA7pM1GP9gLd-hz5did6baZvcKd8DXkUYM-WALRZFnzHivu_1YEsC_CeXNdMexKDN7EwSQ6L5eZvOd1F1RkF_nLy_J0twg`. | :::note For the fictitious email address `user@example.com` used in these examples, the corresponding refresh token was: `AAAABrexFHvQVhNJqu+y/ua7rsgShF8e9NUXUJOZFmeFRD8TAsJadaLfOlLkwC5iSxcOKWFD9YwMBzbbcPa92CInba+bcPTaAFNmM2ZpIHgGy6lDcNPzvEnPQh/5fyZ3MD44SX/tHyIXa0R2OBAOLBA1A81r3jefhSsxZdyyBF58KtnaX6UbaeOEaguOfMnJdmhaPeWKj33v7vGfROWtxDWmi6wvGL5lHTX9H6iIZ9i1WSsemYPUgmoDOQeT7nzllJK968OECFj5LkCazDN3pCrYSeuJby9o0fMuSZNxzp6EVzi6XVED4ETtzpcaY0AArzzdh0IXV9MgH8jyg7bJSUWXQG+8kMPZzwbs9EB+7ddAUOLZL/GBna8Hm3Im03EjN3sJ`. @@ -75,7 +75,7 @@ The UID2 framework consists of the following components, all of which are curren | Component | Description | | :--- | :--- | | **Core Service** | A centralized service that manages access to salts, encryption keys, and other relevant data in the UID2 ecosystem. | -| **Operator Service** | A service that enables the management and storage of encryption keys and salts from the UID2 Core Service, hashing of users' personal data, encryption of raw UID2s, and decryption of UID2 tokens. There can be multiple instances of the service (public or private) operated by multiple [participants](#participants), known as operators.
Public Operators run publicly available instances of the Operator Service and make them available to all relevant UID2 participants. There might also be Private Operators that run private instances of the Operator Service exclusively for their own use. All instances are designed with protections to keep critical UID2 data secure and interoperable, regardless of who operates the service. | +| **Operator Service** | A service that enables the management and storage of encryption keys and salts from the UID2 Core Service, hashing of users' personal data, encryption of raw UID2s, and decryption of UID2 tokens. There can be multiple instances of the service (public or private) operated by multiple [participants](#participants), known as operators.
Public Operators run publicly available instances of the Operator Service and make them available to all relevant UID2 participants. There might also be Private Operators that run private instances of the Operator Service exclusively for their own use. All instances are designed with protections to keep critical UID2 data secure and interoperable, regardless of who operates the service. | | **Opt-Out Service** | A global service that manages and stores user opt-out requests and disseminates them to publishers, operator service instances, and DSPs. | | **Transparency and Control Portal** | A user-facing website, [https://www.transparentadvertising.com/](https://www.transparentadvertising.com/), that allows consumers to opt out of UID2 at any time. | diff --git a/docs/overviews/overview-publishers.md b/docs/overviews/overview-publishers.md index b6dc876e9..f63889d51 100644 --- a/docs/overviews/overview-publishers.md +++ b/docs/overviews/overview-publishers.md @@ -104,9 +104,9 @@ For a detailed summary of web integration options, see [Web Integration Overview | Integration Type| Documentation | Content Description | | :--- | :--- | :--- | -| Prebid (Overview) | [UID2 Integration Overview for Prebid](../guides/integration-prebid.md) | An overview of options for publishers who want to integrate with UID2 and generate UID2 tokens to be passed by Prebid.js or the Prebid Mobile SDK in the RTB bidstream. | +| Prebid (Overview) | [UID2 Integration Overview for Prebid](../guides/integration-prebid.md) | An overview of options for publishers who want to integrate with UID2 and generate UID2 tokens (advertising tokens) to be passed by Prebid.js or the Prebid Mobile SDK in the RTB bidstream. | | Prebid.js Client-Side Integration | [UID2 Client-Side Integration Guide for Prebid.js](../guides/integration-prebid-client-side.md) | A guide for publishers who want to request UID2 tokens client-side, which is the easiest implementation approach, and choose to have Prebid.js manage the following:
  • Token generation and token refresh.
  • Passing the tokens into the RTB bidstream.
| -| Prebid.js Client-Server Integration | [UID2 Client-Server Integration Guide for Prebid.js](../guides/integration-prebid-client-server.md) | A guide for publishers who want to integrate with UID2 and generate UID2 tokens (advertising tokens) to be passed by Prebid.js in the RTB bidstream, but want to generate tokens server-side: for example, publishers who are using a Private Operator. | +| Prebid.js Client-Server Integration | [UID2 Client-Server Integration Guide for Prebid.js](../guides/integration-prebid-client-server.md) | A guide for publishers who want to integrate with UID2 and generate UID2 tokens to be passed by Prebid.js in the RTB bidstream, but want to generate tokens server-side: for example, publishers who are using a Private Operator. | | JavaScript (Overview) | [UID2 Integration Overview for JavaScript](../guides/integration-javascript.md) | An overview of options for publishers who want to integrate with UID2 using the JavaScript SDK. | | JavaScript Client-Side Integration | [Client-Side Integration Guide for JavaScript](../guides/integration-javascript-client-side.md) | A guide for publishers who want to integrate with UID2 using only client-side JavaScript changes, which is the easiest implementation approach.
The SDK for JavaScript manages token generation and token refresh automatically. | | JavaScript Client-Server Integration | [Client-Server Integration Guide for JavaScript](../guides/integration-javascript-client-server.md) | A publisher guide covering standard web integration scenarios that use the SDK for JavaScript and require tokens to be generated on the server side and passed to the publisher web pages. | @@ -139,7 +139,7 @@ The following resources are available for publishers integrating with Prebid. | Integration Type| Documentation | Content Description | | :--- | :--- | :--- | -| Prebid (Overview) | [UID2 Integration Overview for Prebid](../guides/integration-prebid.md) | An overview of options for publishers who want to integrate with UID2 and generate UID2 tokens to be passed by Prebid.js or the Prebid Mobile SDK in the RTB bidstream. | +| Prebid (Overview) | [UID2 Integration Overview for Prebid](../guides/integration-prebid.md) | An overview of options for publishers who want to integrate with UID2 and generate UID2 tokens (advertising tokens) to be passed by Prebid.js or the Prebid Mobile SDK in the RTB bidstream. | | Prebid.js Client-Side Integration | [UID2 Client-Side Integration Guide for Prebid.js](../guides/integration-prebid-client-side.md) | A guide for publishers who want to request UID2 tokens client-side, which is the easiest implementation approach, and choose to have Prebid.js manage the following:
  • Token generation and token refresh.
  • Passing the tokens into the RTB bidstream.
| | Prebid.js Client-Server Integration | [UID2 Client-Server Integration Guide for Prebid.js](../guides/integration-prebid-client-server.md) | A guide for publishers who want to integrate with UID2 and generate UID2 tokens to be passed by Prebid.js in the RTB bidstream, but want to generate tokens server-side: for example, publishers who are using a Private Operator. | | Prebid.js on Mobile | [UID2 Mobile Integration for Prebid.js](../guides/integration-prebid-mobile-summary.md) | A summary of information resources for UID2 integration with Prebid.js on mobile devices. | diff --git a/docs/portal/audit-trail.md b/docs/portal/audit-trail.md index e012bf744..f60a279e5 100644 --- a/docs/portal/audit-trail.md +++ b/docs/portal/audit-trail.md @@ -1,6 +1,6 @@ --- title: Audit Trail -description: View a detailed log of past actions performed on the UID2 Portal. +description: View a detailed log of past actions performed in the UID2 Portal. hide_table_of_contents: false sidebar_position: 09 --- diff --git a/docs/portal/portal-getting-started.md b/docs/portal/portal-getting-started.md index 69ef86602..ba6a0c77f 100644 --- a/docs/portal/portal-getting-started.md +++ b/docs/portal/portal-getting-started.md @@ -1,6 +1,6 @@ --- title: Getting Started -description: Learn how to create an account on the UID2 Portal. +description: Learn how to create an account in the UID2 Portal. hide_table_of_contents: false sidebar_position: 03 --- diff --git a/docs/ref-info/ref-server-side-token-generation.md b/docs/ref-info/ref-server-side-token-generation.md index 5131a5545..a977842ad 100644 --- a/docs/ref-info/ref-server-side-token-generation.md +++ b/docs/ref-info/ref-server-side-token-generation.md @@ -19,12 +19,12 @@ There are two approaches for publishers generating UID2 tokens on the server sid - Direct integration to API endpoints :::warning -For security reasons, the API key and secret used in token generation *must* be called on the server side. Do not store these values on the client side, whether on a web page, mobile app, or in Prebid. For details, see [Security of API Key and Client Secret](../getting-started/gs-credentials.md#security-of-api-key-and-client-secret). +For security reasons, the API key and secret used in token generation *must* be called on the server side. Do not store these values on the client side, whether on a web page, in a mobile app, or in Prebid. For details, see [Security of API Key and Client Secret](../getting-started/gs-credentials.md#security-of-api-key-and-client-secret). ::: Options are summarized in the following table. -| Integration Solution  | Generate Token | Refresh Token | +| Integration Solution | Generate Token | Refresh Token | | :--- | :--- | :--- | | [SDK for Java](../sdks/sdk-ref-java.md) | ✅ | ✅ | | [SDK for Python](../sdks/sdk-ref-python.md) | ✅ | ✅ | diff --git a/docs/sdks/sdk-ref-android.md b/docs/sdks/sdk-ref-android.md index 3691c337e..fd80e0312 100644 --- a/docs/sdks/sdk-ref-android.md +++ b/docs/sdks/sdk-ref-android.md @@ -126,7 +126,7 @@ There are two ways to establish an initial UID2 Identity: 1. Generate the UID2 identity using DII—email (hashed or unhashed) or phone number (hashed or unhashed). For integration instructions, see [Client-Side Integration Guide for Mobile](../guides/integration-mobile-client-side.md). -2. Create a UID2 identity server-side and then pass it into the UID2 SDK. For integration instructions, refer to [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-server.md). +2. Create a UID2 identity server-side and then pass it into the UID2 SDK. For integration instructions, see [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-server.md). The UID2 Mobile SDKs can perform refreshes of UID2 identities, after an Identity is established. This is because the refresh functionality relies on the refresh tokens that are part of the UID2 Identity. @@ -134,7 +134,7 @@ The UID2 Mobile SDKs can perform refreshes of UID2 identities, after an Identity The following code samples provide examples of performing specific activities relating to managing UID2 with the SDK for Android. -Generate an initial UID2 Identity (refer to [Client-Side Integration Guide for Mobile](../guides/integration-mobile-client-side#configure-the-uid2-mobile-sdk)): +Generate an initial UID2 Identity (see [Client-Side Integration Guide for Mobile](../guides/integration-mobile-client-side#configure-the-uid2-mobile-sdk)): ``` javascript UID2Manager.getInstance().generateIdentity( identityRequest: IdentityRequest, @@ -143,7 +143,7 @@ UID2Manager.getInstance().generateIdentity( onResult: (GenerateIdentityResult) -> Unit ) ``` -Set the UID2 Identity (refer to [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-server#configure-the-uid2-mobile-sdk)): +Set the UID2 Identity (see [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-server#configure-the-uid2-mobile-sdk)): ```js UID2Manager.getInstance().setIdentity(identity: UID2Identity) @@ -171,7 +171,7 @@ The following functions are available as part of the UID2Manager API: #### generateIdentity() -Generate a UID2 Identity using Directly identifying information (DII). For instructions, see [Configure the UID2 mobile SDK](../guides/integration-mobile-client-side.md#configure-the-uid2-mobile-sdk) in the *Client-Side Integration Guide for Mobile*. +Generate a UID2 Identity using Directly identifying information (DII). For instructions, see [Configure the UID2 Mobile SDK](../guides/integration-mobile-client-side.md#configure-the-uid2-mobile-sdk) in the *Client-Side Integration Guide for Mobile*. #### setIdentity() diff --git a/docs/sdks/sdk-ref-csharp-dotnet.md b/docs/sdks/sdk-ref-csharp-dotnet.md index 1a80c02f5..0722bcda6 100644 --- a/docs/sdks/sdk-ref-csharp-dotnet.md +++ b/docs/sdks/sdk-ref-csharp-dotnet.md @@ -11,6 +11,10 @@ import Link from '@docusaurus/Link'; You can use the SDK for C# / .NET on the server side to encrypt raw UID2s to create UID2 tokens for sharing, and to decrypt UID2 tokens to access the raw UID2. +## Overview + +The functions outlined here define the information that you'll need to configure or can retrieve from the library. The parameters and property names defined below are pseudocode. Actual parameters and property names vary by language but will be similar to the information outlined here. + ## Functionality This SDK simplifies integration with UID2 for any DSPs or UID2 sharers who are using C# / .NET for their server-side coding. The following table shows the functions it supports. diff --git a/docs/sdks/sdk-ref-ios.md b/docs/sdks/sdk-ref-ios.md index 6dce3575c..558fbb424 100644 --- a/docs/sdks/sdk-ref-ios.md +++ b/docs/sdks/sdk-ref-ios.md @@ -58,8 +58,8 @@ Minimum requirements for this SDK are as follows: - Xcode version: 15.0+ - iOS minimum target version: - - For full functionality: 13.0+ - - For partial functionality: 12.0+. The app with the SDK integrated can be installed with all devices, but generating or retrieving UID2 tokens on the client side will not work with devices running iOS versions below 13.0. + - For full functionality: 13.0+ + - For partial functionality: 12.0+. The app with the SDK integrated can be installed with all devices, but generating or retrieving UID2 tokens on the client side will not work with devices running iOS versions below 13.0. - tvOS minimum target version: 13.0+ - Swift version: 5.0+ @@ -88,7 +88,7 @@ dependencies: [ In the XCode user interface, under Package Dependencies, add the following entry for your apps: | Name | Location | Dependency Rule | -| :--- | :--- | :--- | +| :--- | :--- | :--- | | uid2-ios-sdk | `git@github.com:IABTechLab/uid2-ios-sdk.git` | Up to next major version: 1.7.0 < 2.0.0 | ### Installing with CocoaPods @@ -118,7 +118,7 @@ The UID2 Mobile SDKs can perform refreshes of UID2 identities, after an Identity The following code samples provide examples of performing specific activities relating to managing UID2 with the SDK for iOS. -Generate an initial UID2 Identity (for instructions, see [Client-Side Integration Guide for Mobile](../guides/integration-mobile-client-side#configure-the-uid2-mobile-sdk)): +Generate an initial UID2 Identity (for instructions, see [Client-Side Integration Guide for Mobile](../guides/integration-mobile-client-side.md#configure-the-uid2-mobile-sdk)): ```js UID2Manager.shared.generateIdentity( @@ -156,7 +156,7 @@ The following functions are available as part of the UID2Manager API: #### generateIdentity() -Generate a UID2 Identity using Directly identifying information (DII). For details, see [Configure the UID2 mobile SDK](../guides/integration-mobile-client-side.md#configure-the-uid2-mobile-sdk) in the *Client-Side Integration Guide for Mobile*. +Generate a UID2 Identity using Directly identifying information (DII). For details, see [Configure the UID2 Mobile SDK](../guides/integration-mobile-client-side.md#configure-the-uid2-mobile-sdk) in the *Client-Side Integration Guide for Mobile*. #### setIdentity() diff --git a/docs/sdks/sdk-ref-java.md b/docs/sdks/sdk-ref-java.md index d0ccf0646..f37bc5f73 100644 --- a/docs/sdks/sdk-ref-java.md +++ b/docs/sdks/sdk-ref-java.md @@ -147,7 +147,7 @@ If you're using the SDK's HTTP implementation, follow these steps. - --> Always apply `doNotGenerateTokensForOptedOut()`. This applies a parameter similar to setting `optout_check=1` in the call to the POST /token/generate endpoint (see [Unencrypted JSON Body Parameters](../endpoints/post-token-generate.md#unencrypted-json-body-parameters)). ::: - + #### Basic Usage, Client-Server Integration @@ -295,6 +295,7 @@ If you're using server-side integration (see [Publisher Integration Guide, Serve If the user has opted out, this method returns null, indicating that the user's identity should be removed from the session. To confirm optout, you can use the `tokenRefreshResponse.isOptout()` function. ## Usage for Advertisers/Data Providers + 1. Create an instance of IdentityMapClient as an instance variable. ```java final private IdentityMapClient identityMapClient = new IdentityMapClient(UID2_BASE_URL, UID2_API_KEY, UID2_SECRET_KEY); diff --git a/docs/sdks/sdk-ref-javascript-v2.md b/docs/sdks/sdk-ref-javascript-v2.md index c521c08c3..6debd34ec 100644 --- a/docs/sdks/sdk-ref-javascript-v2.md +++ b/docs/sdks/sdk-ref-javascript-v2.md @@ -103,7 +103,7 @@ As part of the SDK [initialization](#initopts-object-void), a token auto-refresh Here's what you need to know about the token auto-refresh: -- Only one call to the [POST /token/refresh](../endpoints/post-token-refresh.md) endpoint call can be active at a time. +- Only one call to the [POST /token/refresh](../endpoints/post-token-refresh.md) endpoint call can be active at a time. - If the [POST /token/refresh](../endpoints/post-token-refresh.md) response is unsuccessful because the user has opted out, or because the refresh token has expired, this suspends the background auto-refresh process. To use UID2-based targeted advertising again, you must obtain the email or phone number from the consumer ([isLoginRequired()](#isloginrequired-boolean) returns `true`). In all other cases, auto-refresh attempts continue in the background. - The [callback function](#callback-function) specified during the SDK initialization is invoked in the following cases: - After each successful refresh attempt. @@ -229,7 +229,7 @@ If the identity is not available, use the [isLoginRequired()](#isloginrequired-b Gets the current advertising token. -Before calling this function, be sure to call [init()](#initopts-object-void) and wait until the callback you supply has been invoked, as shown in the following example. +Before calling this function, be sure to call [init()](#initopts-object-void) and wait until the callback you supply has been invoked, as shown in the following example. ```html