function _restclient_prepare_authentication_hybridauth in RESTClient 7.2
Prepare authentication using hybridauth.
Parameters
array $variables [reference]: Array of URL variables
- Incoming ['authentication']['hybridauth_client'] - Array of values to pass through so hybridauth creates the client. May contain just ['name'] to look up an existing client by name. See hybridauth documentation.
- Incoming ['authentication']['oauth_format'] - Optional format for the Authorization request header to accommodate different server implementations. The default format is 'Bearer :token' where :token is replaced with the OAuth token.
- Outgoing ['headers']['Authorization'] - authorization header containing the oauth token
Return value
boolean TRUE if authentication is ready or not needed, FALSE if there is an error.
1 call to _restclient_prepare_authentication_hybridauth()
- _restclient_prepare_authentication in ./
restclient.module - Prepare authentication for the request, if needed.
File
- ./
restclient.module, line 978 - Defines a standard REST interface to RESTful services
Code
function _restclient_prepare_authentication_hybridauth(&$variables) {
$error_message = '';
// Check if restclient has hybridauth turned off.
if (!variable_get('restclient_hybridauth', FALSE)) {
$error_message = 'HybridAuth authentication is required but restclient has hybridauth turned off.';
}
else {
if (!module_exists('hybridauth')) {
$error_message = 'HybridAuth authentication is required but hybridauth module is not enabled.';
}
}
// Check if hybridauth is specified.
if (!isset($variables['authentication']['hybridauth'])) {
$error_message = "Authorization parameters for ['hybridauth'] not found.";
}
if (!empty($error_message)) {
watchdog('restclient', $error_message, NULL, WATCHDOG_ERROR);
return FALSE;
}
$hybridauth_instance = hybridauth_get_instance();
$session_data = $hybridauth_instance
->storage()
->getSessionData();
global $user;
if (!empty($hybridauth_instance) and !empty($session_data) and $user->uid != 1) {
// Get the HybridAuth client ID
$hybridauth_client_id = $variables['authentication']['hybridauth']['client_id'];
$hybridauth_adapter = $hybridauth_instance
->getAdapter($hybridauth_client_id);
try {
if (!$hybridauth_adapter
->isUserConnected()) {
$hybridauth_instance
->authenticate($hybridauth_adapter->id);
}
$hybridauth_tokens = $hybridauth_adapter
->getAccessToken();
$oauth_token = $hybridauth_tokens['access_token'];
} catch (Exception $e) {
// Something went wrong.
watchdog('restclient', 'An exception occurred during HybridAuth processing: @e', array(
'@e' => $e
->getMessage(),
), WATCHDOG_ERROR);
}
}
// At this point, no point in continuing if the token is empty.
if (empty($oauth_token)) {
return FALSE;
}
// Use the oauth token to prepare the authorization header according to
// the format specified in $variables['authentication']['oauth_format'].
$oauth_format = 'Bearer :token';
// Default
if (isset($variables['authentication']['oauth_format'])) {
$oauth_format = $variables['authentication']['oauth_format'];
}
$variables['headers']['Authorization'] = str_replace(':token', $oauth_token, $oauth_format);
return TRUE;
}