Account Link/Unlink

Account linking/unlinking requires a valid Janrain access token (from a previous Authentication or Registration). It is not possible to link one existing user record to another, so the only scenario that needs to be addressed is linking to a Social account.

For linking and unlinking, it will be necessary to first make an API call to the entity endpoint to retrieve and/or verify the current list of the user’s linked accounts.


$api_call= '/entity';
$params= array(
    'access_token'=> $_SESSION['access_token'],
    // attributes containing user's linked accounts
    'attributes'=> '["profiles.domain", "profiles.identifier"]'
);
$curl= curl_init();
curl_setopt($curl,CURLOPT_URL,JANRAIN_CAPTURE_URL.$api_call);
curl_setopt($curl,CURLOPT_POST,true);
curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl,CURLOPT_POSTFIELDS,http_build_query($params));
$api_response= json_decode(curl_exec($curl));
curl_close($curl);

Account Link

  1. Authenticate with the social provider to retrieve the social login token. (See IDP Authentication for instructions.)
  2. Link the social account via the oauth/link_account_native call.

$api_call= '/oauth/link_account_native';
$params= array(
    'client_id'=> JANRAIN_LOGIN_CLIENT_ID,
    'flow'=> JANRAIN_FLOW_NAME,
    'flow_version'=> JANRAIN_FLOW_VERSION,
    'locale'=> 'en-US',
    'redirect_uri'=> 'https://localhost',
    // valid access token
    'access_token'=> $_SESSION['access_token'],
    // social login token obtained from previous step
    'token'=> $_POST['token']
);
$curl= curl_init();
curl_setopt($curl,CURLOPT_URL,JANRAIN_CAPTURE_URL.$api_call);
curl_setopt($curl,CURLOPT_POST,true);
curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl,CURLOPT_POSTFIELDS,http_build_query($params));
$api_response= json_decode(curl_exec($curl));
curl_close($curl);

Response

Outcome / Next Step

Success (ok)

Account is linked

Social account already exists (unique_violation)

Provide a resolution path for this error

Account Unlink

Unlink a social account via the oauth/unlink_account_native call.


$api_call= '/oauth/unlink_account_native';
$params= array(
    'client_id'=> JANRAIN_LOGIN_CLIENT_ID,
    'flow'=> JANRAIN_FLOW_NAME,
    'flow_version'=> JANRAIN_FLOW_VERSION,
    'locale'=> 'en-US',
    // valid access token
    'access_token'=> $_SESSION['access_token'],
    // identifier value from profiles.[profile].identifier schema attribute
    'identifier_to_remove'=> $_POST['identifier']
);
$curl= curl_init();
curl_setopt($curl,CURLOPT_URL,JANRAIN_CAPTURE_URL.$api_call);
curl_setopt($curl,CURLOPT_POST,true);
curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl,CURLOPT_POSTFIELDS,http_build_query($params));
$api_response= json_decode(curl_exec($curl));
curl_close($curl);

Response

Outcome / Next Step

Success (ok)

Account is unlinked