Skip to content

Get Authorization URL

Description

This API is used to obtain a URL for the login providers authorization (login) form. The API is used in the OAuth login approach without using login provider's SDK (see Step 1 in Login Without Provider's SDK).

Method

Future<String?> getAuthorizationUrlLink(
  String authProviderCode, {
  Map<String, String>? fieldsMappings,
  List<String>? scope,
})

where:

Argument                Description
authProviderCode Name of the login provider as displayed in Backendless Console - see the specific provider screen at Users > Login Providers. String value.
fieldsMappings Optional parameter. A mapping of user properties between OAuth provider and Backendless. If the map object is not null, it should contain a mapping between the provider specific property names and the column names in the Users table. Consider the following mappings:
"my_email" >> "email"
"my_name" >> "name"
The key identifies the provider's property name and the value is the name of the mapped property (column name) in Backendless. In the example above, "my_email" and "my_name" are the properties returned by the OAuth2 provider and the corresponding values will be respectively stored in the "email" and "name" columns in Backendless. Must be an object.
scope Optional parameter. A collection of security scopes the client application is requesting the permissions for. String value.

Return Value

The method returns an authorization URL. It should be used to open up the provider's login form.

The object in the response has the following structure:

{          
  "url": "authorization URL"  
}

Example

The example below retrieves the authorization URL for "facebook".

providerCode == "facebook"
String? result = await Backendless.userService.getAuthorizationUrlLink(
  providerCode,
  fieldsMappings: fieldsMappings,
  scope: scope,
);

await showDialog(
    useSafeArea: true,
    context: context,
    builder: (context) {
          return Container(
            width: MediaQuery.of(context).size.width * 1.2,
            height: MediaQuery.of(context).size.height,
            child: Column(
              children: [
                Expanded(
                  child: InAppWebView(
                    initialUrlRequest: URLRequest(
                      url: Uri.parse(result!),
                    ),
                    initialOptions: InAppWebViewGroupOptions(
                      crossPlatform: InAppWebViewOptions(
                          useShouldOverrideUrlLoading: true,
                          disableHorizontalScroll: true,
                          cacheEnabled: true,
                          userAgent:
                              'Mozilla/5.0 (iPhone; CPU iPhone OS 15_6_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.6 Mobile/15E148 Safari/604.1'
                          //providerCode != "facebook" ? 'random' : '',
                          ),
                      android: AndroidInAppWebViewOptions(
                        useHybridComposition: true,
                        safeBrowsingEnabled: false,
                      ),
                    ),
                  ),
                ),
              ],
            ),
          );
        });