fb_instant_articles_api.module in Facebook Instant Articles 7
Hook implementations for Facebook Instant Articles API module.
File
modules/fb_instant_articles_api/fb_instant_articles_api.moduleView source
<?php
/**
* @file
* Hook implementations for Facebook Instant Articles API module.
*/
/**
* Implements hook_menu().
*/
function fb_instant_articles_api_menu() {
$items['admin/config/services/fb-instant-articles/api'] = array(
'title' => 'Facebook Instant Articles API',
'description' => 'API settings for Facebook Instant Articles.',
'page callback' => 'drupal_get_form',
'page arguments' => array(
'fb_instant_articles_api_settings',
),
'access arguments' => array(
'administer fb_instant_articles_api',
),
'file' => 'includes/admin.inc',
);
// Callback to handle Facebook Login
$items['admin/config/services/fb-instant-articles/api/login'] = array(
'title' => 'Facebook Login',
'description' => 'Callback that executes right after login in with Facebook.',
'page callback' => 'fb_instant_articles_api_facebook_login',
'access arguments' => array(
'administer fb_instant_articles_api',
),
'type' => MENU_CALLBACK,
);
return $items;
}
/**
* Implements hook_permission().
*/
function fb_instant_articles_api_permission() {
$permissions = array();
$permissions['administer fb_instant_articles_api'] = array(
'title' => t('Administer Facebook Instant Articles API'),
);
return $permissions;
}
/**
* Callback to handle Facebook Login for this module.
*/
function fb_instant_articles_api_facebook_login() {
$fb = new Facebook\Facebook([
'app_id' => variable_get('fb_instant_articles_api_app_id', ''),
'app_secret' => variable_get('fb_instant_articles_api_app_secret', ''),
'default_graph_version' => 'v2.5',
]);
$helper = $fb
->getRedirectLoginHelper();
// Grab the user access token based on callback response and report back an
// error if we weren't able to get one.
try {
$access_token = $helper
->getAccessToken();
} catch (Facebook\Exceptions\FacebookResponseException $e) {
$error_msg = 'We received the following error while attempting to authenticate your Facebook account: ' . $e
->getMessage();
drupal_set_message($error_msg, 'error');
drupal_goto('admin/config/services/fb-instant-articles/api');
exit;
} catch (Facebook\Exceptions\FacebookSDKException $e) {
$error_msg = 'We received the following error while attempting to authenticate your Facebook account: ' . $e
->getMessage();
drupal_set_message($error_msg, 'error');
drupal_goto('admin/config/services/fb-instant-articles/api');
exit;
}
if ($access_token == NULL) {
$error_msg = 'We failed to authenticate your Facebook account with this module. Please try again.';
drupal_set_message($error_msg, 'error');
drupal_goto('admin/config/services/fb-instant-articles/api');
exit;
}
// Confirm that the person granted the necessary permissions before proceeding
$permissions = $fb
->get('/me/permissions', $access_token)
->getGraphEdge();
// $rejected_permissions = array();
$rejected_permissions = '';
foreach ($permissions as $permission) {
if ($permission['status'] != 'granted') {
$rejected_permissions = $rejected_permissions . ' ' . $permission['permission'];
}
}
if ($rejected_permissions != '') {
$error_msg = 'You did not grant the following required permissions in the Facebook authentication process: ' . $rejected_permissions . '. Please try again.';
drupal_set_message($error_msg, 'error');
drupal_goto('admin/config/services/fb-instant-articles/api');
exit;
}
// Store this user access token to the database
variable_set('fb_instant_articles_api_access_token', $access_token
->getValue());
drupal_goto('admin/config/services/fb-instant-articles/api');
}
Functions
Name | Description |
---|---|
fb_instant_articles_api_facebook_login | Callback to handle Facebook Login for this module. |
fb_instant_articles_api_menu | Implements hook_menu(). |
fb_instant_articles_api_permission | Implements hook_permission(). |