TwitterAuthManager.php in Open Social 8.2
File
modules/custom/social_auth_twitter/src/TwitterAuthManager.php
View source
<?php
namespace Drupal\social_auth_twitter;
use Drupal\social_auth_extra\AuthManager;
use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException;
use Abraham\TwitterOAuth\TwitterOAuth;
use Abraham\TwitterOAuth\TwitterOAuthException;
use Drupal\social_auth_twitter\Settings\TwitterAuthSettings;
class TwitterAuthManager extends AuthManager {
public function getSocialNetworkKey() {
return TwitterAuthSettings::getSocialNetworkKey();
}
public function setSdk($sdk) {
if (!$sdk instanceof TwitterOAuth) {
throw new InvalidArgumentException('SDK object should be instance of \\Abraham\\TwitterOAuth\\TwitterOAuth class');
}
$this->sdk = $sdk;
}
public function getAuthenticationUrl($type, array $scope = [
'read',
]) {
$request_token = $this->sdk
->oauth('oauth/request_token', [
'oauth_callback' => $this
->getRedirectUrl($type),
'x_auth_access_type' => current($scope),
]);
$data_handler = \Drupal::service('plugin.network.manager')
->createInstance('social_auth_twitter')
->getDataHandler();
$data_handler
->set('oauth_token', $request_token['oauth_token']);
$data_handler
->set('oauth_token_secret', $request_token['oauth_token_secret']);
return $this->sdk
->url('oauth/authorize', [
'oauth_token' => $request_token['oauth_token'],
]);
}
public function getAccessToken($type) {
return NULL;
}
public function getProfile() {
try {
$this->profile = $this->sdk
->get('account/verify_credentials', [
'include_email' => 'true',
'include_entities' => 'false',
'skip_status' => 'true',
]);
return $this->profile;
} catch (TwitterOAuthException $e) {
$this->loggerFactory
->get('social_auth_twitter')
->error('Could not load Twitter user profile: TwitterOAuthException: @message', [
'@message' => $e
->getMessage(),
]);
return NULL;
}
return FALSE;
}
public function getProfilePicture() {
if (($profile = $this
->getProfile()) && isset($profile->screen_name) && empty($profile->default_profile_image)) {
return "https://twitter.com/{$profile->screen_name}/profile_image?size=original";
}
}
public function setAccessToken($access_token) {
$this->sdk
->setOauthToken($access_token['oauth_token'], $access_token['oauth_token_secret']);
}
public function getAccountId() {
if (($profile = $this
->getProfile()) && isset($profile->id)) {
return $profile->id;
}
}
public function getFirstName() {
return NULL;
}
public function getLastName() {
return NULL;
}
public function getUsername() {
if (($profile = $this
->getProfile()) && isset($profile->screen_name)) {
return $profile->screen_name;
}
return parent::getUsername();
}
}
Classes
Name |
Description |
TwitterAuthManager |
Manages the authorization process before getting a long lived access token. |