--- title: "Accessing User Information" slug: "accessing-user-information" updated: 2024-11-27T15:38:22Z published: 2024-11-27T15:38:22Z canonical: "docs.agilenow.io/accessing-user-information" --- > ## Documentation Index > Fetch the complete documentation index at: https://docs.agilenow.io/llms.txt > Use this file to discover all available pages before exploring further. # Accessing User Information Agile.Now implements OpenID Connect, providing a `userinfo` endpoint that returns claims about the authenticated user. This endpoint is particularly useful for developers looking to obtain user profile details after authentication. ## User Info Endpoint: To retrieve user profile information, send a GET request to: ``` GET https:///oauth/rest/v2/default/me/userinfo ``` Remember to replace `<server-url>` with the actual URL of your Agile.Now server. ## Supported Scopes: The `userinfo` endpoint supports various scopes that align with the data you wish to retrieve. These scopes include: - `profile` - `email` - `phone` - `roles` - `identifier` Include these scopes in your authorization request to ensure the `userinfo` response contains the desired claims. ## User Info Response: Upon a successful request to the `userinfo` endpoint, the response includes a JSON object with the user's claims, structured as follows: | Claim | Type | Example | Description | | --- | --- | --- | --- | | sub | String | "248289761001" | The user's unique identifier. | | tid | String | "030e525a-4886-4ecd-8ca7-6f52ea000015" | Tenant Identifier—identifies the specific tenant (organization) associated with the user. | | preferred_username | String | "john.doe" | Shorthand name by which the user wishes to be referred to. | | name | String | "John Doe" | The user's full name. | | given_name | String | "John" | The user's first name. | | family_name | String | "Doe" | The user's last name. | | email | String | "john.doe@example.com" | The user's email address. | | email_verified | Boolean | true | Indicates whether the user's email has been verified. | | phone_number | String | "+1234567890" | The user's phone number. | | phone_number_verified | Boolean | true | Indicates whether the user's phone number has been verified. | | identifier | String | "xxxxxx-xxxx" | The user's identifier (e.g., SSN.) | | identifier_verified | Boolean | true | Indicates whether the user's identifier (e.g., SSN) has been verified | | profile | String | "https://example.com/johndoe" | The URL to the user's profile page. | | locale | String | "en-US" | The user's locale, representing their preferred language and regional settings. | | roles | Array | ["customer","user"] | Roles assigned to the user. | ### Email and Phone Verification The `userinfo` response includes `email_verified` and `phone_number_verified` claims to indicate whether the user's email and phone number have been validated by the identity provider. - **`email_verified`**: A boolean value that shows whether the email address is verified. (`true` if verified, `false` otherwise) - **`phone_number_verified`**: A boolean value that shows whether the phone number is verified. (`true` if verified, `false` otherwise) ### Example JSON Response from `userinfo`: ``` { "sub": "248289761001", "name": "John Doe", "given_name": "John", "family_name": "Doe", "email": "john.doe@example.com", "email_verified": true, "phone_number": "+1234567890", "phone_number_verified": true, "locale": "en-US", "profile": "https://example.com/johndoe" } ``` ## Handling Bearer Token Errors: To access the `userinfo` endpoint, include a `Bearer` token in the Authorization header. If the token is invalid, you'll receive an error response. ### Error Response Example: ``` { "error":"Unauthorized", "error_description":"The session ID or OAuth token used has expired or is invalid.", "Errors": [ "The session ID or OAuth token used has expired or is invalid." ], "Type": "/Errors/Unauthorized", "Title": "Unauthorized", "StatusCode": 401, "Instance": "/oauth/rest/v2/me/userinfo" } ``` ### Error Handling Tips: - Always pass a valid `Bearer` token in the Authorization header. - Implement token refresh logic in your application to handle expired tokens. - Use secure HTTPS connections to prevent token interception and leakage. ## Best Practices for Developers: - Ensure scopes requested during the authorization process match those needed for `userinfo` retrieval. - Store and manage `Bearer` tokens securely within your application. - Handle user data obtained from `userinfo` with care, respecting privacy and data protection laws. By integrating the `userinfo` endpoint into your application, you can provide a more personalized user experience, leveraging the rich set of user claims available through Agile.Now.