Fatal error: Class 'Response' not found - php

I'm working with Abraham's twitteroauth to implement Twitter OAuth in my application. While running my application, this is the error I'm encountering:
Fatal error: Class 'Response' not found in /opt/lampp/htdocs/tmhOAuth-master/twitteroauth.php on line 108
Now, this is what my twitteroauth.php file looks like till the 108th line:
<?php
/**
* The most popular PHP library for use with the Twitter OAuth REST API.
*
* #license MIT
*/
//namespace twitteroauthm\src\TwitterOAuth;
//use twitteroauthm\src\TwitterOAuth;
use twitteroauthm\src\Util\JsonDecoder;
require "twitteroauthm/autoload.php";
use Abraham\TwitterOAuth\TwitterOAuth as Config;
//require_once("twitteroauthm/src/TwitterOAuth.php");
//use twitteroauthm\src\TwitterOAuth;
//require_once("twitteroauthm/src/Config.php");
/**
* TwitterOAuth class for interacting with the Twitter API.
*
* #author Abraham Williams <abraham#abrah.am>
*/
class TwitterOAuth extends Config
{
const API_VERSION = '1.1';
const API_HOST = 'https://api.twitter.com';
const UPLOAD_HOST = 'https://upload.twitter.com';
/** #var Response details about the result of the last request */
private $response;
/** #var string|null Application bearer token */
private $bearer;
/** #var Consumer Twitter application details */
private $consumer;
/** #var Token|null User access token details */
private $token;
/** #var HmacSha1 OAuth 1 signature type used by Twitter */
private $signatureMethod;
/**
* Constructor
*
* #param string $consumerKey The Application Consumer Key
* #param string $consumerSecret The Application Consumer Secret
* #param string|null $oauthToken The Client Token (optional)
* #param string|null $oauthTokenSecret The Client Token Secret (optional)
*/
public function __construct($consumerKey, $consumerSecret, $oauthToken = null, $oauthTokenSecret = null)
{
$this->resetLastResponse();
$this->signatureMethod = new HmacSha1();
$this->consumer = new Consumer($consumerKey, $consumerSecret);
if (!empty($oauthToken) && !empty($oauthTokenSecret)) {
$this->token = new Token($oauthToken, $oauthTokenSecret);
}
if (empty($oauthToken) && !empty($oauthTokenSecret)) {
$this->bearer = $oauthTokenSecret;
}
}
/**
* #param string $oauthToken
* #param string $oauthTokenSecret
*/
public function setOauthToken($oauthToken, $oauthTokenSecret)
{
$this->token = new Token($oauthToken, $oauthTokenSecret);
}
/**
* #return string|null
*/
public function getLastApiPath()
{
return $this->response->getApiPath();
}
/**
* #return int
*/
public function getLastHttpCode()
{
return $this->response->getHttpCode();
}
/**
* #return array
*/
public function getLastXHeaders()
{
return $this->response->getXHeaders();
}
/**
* #return array|object|null
*/
public function getLastBody()
{
return $this->response->getBody();
}
/**
* Resets the last response cache.
*/
public function resetLastResponse()
{
$this->response = new Response();
}
What seems to be wrong with my code? Is there a way to include the Response class into my file that I'm not aware of?
I'm also including a few screenshots to give an overview of my project's file structure:

as you are using namespaces, add 'use Response' at the top, as for now your response class is not recognized
same way as you are using Confing, just make sure linke to Response class will be recognized.
use Abraham\TwitterOAuth\TwitterOAuth as Config;
use Abraham\TwitterOAuth\Response as Response;
or try to include it at the top:
require_once('your_path/Response.php');

Related

Laravel Call to a member function respondToAccessTokenRequest() on null

I am new to laravel, I am trying to generate oauth token by extending Laravel Passport AccessTokenController class, and I always getting this error "message": "Call to a member function respondToAccessTokenRequest() on null",
here is my class
class B2BTokenController extends \Laravel\Passport\Http\Controllers\AccessTokenController
{
function issueB2BToken(ServerRequestInterface $request)
{
$req = $request->withParsedBody([
"grant_type" => "client_credentials",
"client_id" => $request->getHeaderLine('X-CLIENT-KEY'),
"client_secret" => $request->getHeaderLine('X-SIGNATURE'),
]);
$response = parent::issueToken($req);
return $response->getContent();
}
}
and here is \Laravel\Passport\Http\Controllers\AccessTokenController class
class AccessTokenController
{
use HandlesOAuthErrors;
/**
* The authorization server.
*
* #var \League\OAuth2\Server\AuthorizationServer
*/
protected $server;
/**
* The token repository instance.
*
* #var \Laravel\Passport\TokenRepository
*/
protected $tokens;
/**
* Create a new controller instance.
*
* #param \League\OAuth2\Server\AuthorizationServer $server
* #param \Laravel\Passport\TokenRepository $tokens
* #return void
*/
public function __construct(AuthorizationServer $server,
TokenRepository $tokens)
{
$this->server = $server;
$this->tokens = $tokens;
}
/**
* Authorize a client to access the user's account.
*
* #param \Psr\Http\Message\ServerRequestInterface $request
* #return \Illuminate\Http\Response
*/
public function issueToken(ServerRequestInterface $request)
{
return $this->withErrorHandling(function () use ($request) {
return $this->convertResponse(
$this->server->respondToAccessTokenRequest($request, new Psr7Response)
);
});
}
}
Thank you for your help
That's because you are overwriting the __construct method!
Check that and it will work

How do I extend Laravel Sanctum's functionality?

I am specifically trying to get Sanctum's Guard class to look for the API token in a JSON request body if it can't find it in the Authorization header. I simply need to add an elseif after it checks for the bearer token.
So question is: What is the best way to override this method (or class) with my own, without touching the original Sanctum files?
<?php
namespace Laravel\Sanctum;
use Illuminate\Contracts\Auth\Factory as AuthFactory;
use Illuminate\Http\Request;
class Guard
{
/**
* The authentication factory implementation.
*
* #var \Illuminate\Contracts\Auth\Factory
*/
protected $auth;
/**
* The number of minutes tokens should be allowed to remain valid.
*
* #var int
*/
protected $expiration;
/**
* Create a new guard instance.
*
* #param \Illuminate\Contracts\Auth\Factory $auth
* #param int $expiration
* #return void
*/
public function __construct(AuthFactory $auth, $expiration = null)
{
$this->auth = $auth;
$this->expiration = $expiration;
}
/**
* Retrieve the authenticated user for the incoming request.
*
* #param \Illuminate\Http\Request $request
* #return mixed
*/
public function __invoke(Request $request)
{
if ($user = $this->auth->guard('web')->user()) {
return $this->supportsTokens($user)
? $user->withAccessToken(new TransientToken)
: $user;
}
if ($token = $request->bearerToken()) {
$model = Sanctum::$personalAccessTokenModel;
$accessToken = $model::where('token', hash('sha256', $token))->first();
if (! $accessToken ||
($this->expiration &&
$accessToken->created_at->lte(now()->subMinutes($this->expiration)))) {
return;
}
return $this->supportsTokens($accessToken->tokenable) ? $accessToken->tokenable->withAccessToken(
tap($accessToken->forceFill(['last_used_at' => now()]))->save()
) : null;
}
}
/**
* Determine if the tokenable model supports API tokens.
*
* #param mixed $tokenable
* #return bool
*/
protected function supportsTokens($tokenable = null)
{
return in_array(HasApiTokens::class, class_uses_recursive(
$tokenable ? get_class($tokenable) : null
));
}
}
I don't know if you've already figured out but I think you need to add an entry in your AppServiceProvider boot method and override configureGuard functionality placed in SanctumServiceProvider at line 94.
app/Providers/AppServiceProvider.php
Auth::resolved(function ($auth) {
$auth->extend('sanctum', function ($app, $name, array $config) use ($auth) {
return tap($this->createGuard($auth, $config), function ($guard) {
$this->app->refresh('request', $guard, 'setRequest');
});
});
});
You will also need to override createGuard function to specify your custom Guard class with the functionality you require.

How can I get a released version for every project on Jira?

I'm working with Symfony 2.8 (PHP) and I'd like to get all versions for every project on Jira via API Rest Jira, and then to filter theme in order to select only the released versions.
I've found this methods but I dont know how to use the 'expand' parameter for reaching versions
Image 1
Image 2
1st step: at config.yml
For more information about Guzzle configuration: http://docs.guzzlephp.org/en/latest/quickstart.html
csa_guzzle:
clients:
jira:
config:
base_uri: "https://jira.*****.*****.***/rest/api/2/"
timeout: 20.0
headers:
Accept: "application/json"
Content-Type: "application/json"
verify: false
auth: ['api','password','Basic']
2nd step: create a GuzzleHttp client service for sending a request to the api
<?php
namespace AppBundle\Service\Atlassian\Jira\Client;
use GuzzleHttp\Client as GuzzleClientHttp;
use GuzzleHttp\Exception\ServerException;
use Psr\Http\Message\ResponseInterface;
class GuzzleClient
{
/**
* Guzzle Client.
*
* #var GuzzleClientHttp
*/
protected $guzzle;
/**
* Response object of request.
*
* #var ResponseInterface
*/
protected $response;
/**
* GuzzleClient constructor.
*
* #param GuzzleClientHttp $guzzle
*/
public function __construct(GuzzleClientHttp $guzzle)
{
$this->guzzle = $guzzle ?: new GuzzleClientHttp();
}
public function send($method = 'GET', $url, $parameters = [])
{
try {
$this->response = $this->guzzle->request($method, $url, ['query' => $parameters]);
} catch (ServerException $exception) {
$this->response = $exception->getResponse();
}
return $this->getContents();
}
/**
* Return the contents as a string of last request.
*
* #return string
*/
public function getContents()
{
return $this->response->getBody()->getContents();
}
/**
* Getter for GuzzleClient.
*
* #return GuzzleClientHttp
*/
public function getClient()
{
return $this->guzzle;
}
/**
* Getter for last Response.
*
* #return ResponseInterface
*/
public function getResponse()
{
return $this->response;
}
3th step: crate a service for getting all versions
<?php
namespace AppBundle\Service\Atlassian\Jira;
use AppBundle\Service\Atlassian\Jira\Client\GuzzleClient;
class ApiService
{
/**
* Client HTTP.
*
* #var GuzzleClient
*/
protected $client;
/**
* ApiService constructor.
*
* #param GuzzleClient $client
*/
public function __construct(GuzzleClient $client)
{
$this->client = $client;
}
/**
* Get all released versions for a given projectKey.
*
* #param string $projectKey
* #return null|array
*/
public function getVersions($projectKey)
{
$versions = json_decode($this->client->send('GET', 'project/'.$projectKey."/versions/"));
for($i=0;$i< count($versions); $i++)
{
if($versions[$i]->released== false)
{
$result = $versions[$i]->name;
}
}
return $versions;
}
}

Error #0: stream_socket_client(): unable to connect to zf2-api:80 (php_network_getaddresses: getaddrinfo failed: No such host is known. )

I have been trying to design a Signup Page using a tutorial in a Zend framework 2 Book .Problem is that I am unable to complete signup after running it as , clicking on register gives a socket error , which I have no clue.
Zend\Http\Client\Adapter\Exception\RuntimeException
File:
C:\xampp\htdocs\ZF2AD\Chapter10\client\vendor\zendframework\zend-http\src\Client\Adapter\Socket.php:256
Message:
Unable to connect to zf2-api:80 . Error #0: stream_socket_client():unable to connect to zf2-api:80 (php_network_getaddresses: getaddrinfo failed: No such host is known. )
I am using Api to connect to database.Below is the code for my Apiclient.php
<?php
namespace Api\Client;
use Zend\Http\Client;
use Zend\Http\Request;
use Zend\Json\Decoder as JsonDecoder;
use Zend\Json\Json;
use Zend\Log\Logger;
use Zend\Log\Writer\Stream;
/**
* This client manages all the operations needed to interface with the
* social network API
*
* #package default
*/
class ApiClient {
/**
* Holds the client we will reuse in this class
*
* #var Client
*/
protected static $client = null;
/**
* Holds the endpoint urls
*
* #var string
*/
protected static $endpointHost = 'http://zf2-api';
protected static $endpointWall = '/api/wall/%s';
protected static $endpointFeeds = '/api/feeds/%s';
protected static $endpointSpecificFeed = '/api/feeds/%s/%d';
protected static $endpointUsers = '/api/users';
protected static $endpointGetUser = '/api/users/%s';
protected static $endpointUserLogin = '/api/users/login';
/**
* Perform an API reqquest to retrieve the data of the wall
* of an specific user on the social network
*
* #param string $username
* #return Zend\Http\Response
*/
public static function getWall($username)
{
$url = self::$endpointHost . sprintf(self::$endpointWall, $username);
return self::doRequest($url);
}
/**
* Perform an API request to post content on the wall of an specific user
*
* #param string $username
* #param array $data
* #return Zend\Http\Response
*/
public static function postWallContent($username, $data)
{
$url = self::$endpointHost . sprintf(self::$endpointWall, $username);
return self::doRequest($url, $data, Request::METHOD_POST);
}
/**
* Perform an API request to get the list subscriptions of a username
*
* #param string $username
* #return Zend\Http\Response
*/
public static function getFeeds($username)
{
$url = self::$endpointHost . sprintf(self::$endpointFeeds, $username);
return self::doRequest($url);
}
/**
* Perform an API request to add a new subscription
*
* #param string $username
* #param array $postData
* #return Zend\Http\Response
*/
public static function addFeedSubscription($username, $postData)
{
$url = self::$endpointHost . sprintf(self::$endpointFeeds, $username);
return self::doRequest($url, $postData, Request::METHOD_POST);
}
/**
* Perform an API request to remove a subscription
*
* #param string $username
* #param array $postData
* #return Zend\Http\Response
*/
public static function removeFeedSubscription($username, $feedId)
{
$url = self::$endpointHost . sprintf(self::$endpointSpecificFeed, $username, $feedId);
return self::doRequest($url, null, Request::METHOD_DELETE);
}
/**
* Perform an API request to add a new user
*
* #param array $postData
* #return Zend\Http\Response
*/
public static function registerUser($postData)
{
$url = self::$endpointHost . self::$endpointUsers;
return self::doRequest($url, $postData, Request::METHOD_POST);
}
/**
* Perform an API request to get the basic data of a user
*
* #param string $username
* #return Zend\Http\Response
*/
public static function getUser($username)
{
$url = self::$endpointHost . sprintf(self::$endpointGetUser, $username);
return self::doRequest($url, null, Request::METHOD_GET);
}
/**
* Perform an API request to authenticate a user
*
* #param array $postData Array containing username and password on their respective keys
* #return Zend\Http\Response
*/
public static function authenticate($postData)
{
$url = self::$endpointHost . self::$endpointUserLogin;
return self::doRequest($url, $postData, Request::METHOD_POST);
}
/**
* Create a new instance of the Client if we don't have it or
* return the one we already have to reuse
*
* #return Client
*/
protected static function getClientInstance()
{
if (self::$client === null) {
self::$client = new Client();
self::$client->setEncType(Client::ENC_URLENCODED);
}
return self::$client;
}
/**
* Perform a request to the API
*
* #param string $url
* #param array $postData
* #param Client $client
* #return Zend\Http\Response
* #author Christopher
*/
protected static function doRequest($url, array $postData = null, $method = Request::METHOD_GET)
{
$client = self::getClientInstance();
$client->setUri($url);
$client->setMethod($method);
if ($postData !== null) {
$client->setParameterPost($postData);
}
$response = $client->send();
if ($response->isSuccess()) {
return JsonDecoder::decode($response->getBody(), Json::TYPE_ARRAY);
} else {
$logger = new Logger;
$logger->addWriter(new Stream('data/logs/apiclient.log'));
$logger->debug($response->getBody());
return FALSE;
}
}
}
Refining the error , I got to know that this is the main error in all errors
stream_socket_client(): php_network_getaddresses: getaddrinfo failed: No such host is known.
I have tried solutions provided in similar questions , but they didnt helped . If anyone knows about it please help.

Codeigniter unable to load Facebook class under a subfolder

The path of the libraries directory of my codeigniter project is like what shown in the image.
I tried to load Facebook.php class using these following codes, but both of them returned the same error : Unable to load the requested class: Facebook
$this->load->library('facebook/facebook', $fb_config);
or
$this->load->library('Facebook/Facebook', $fb_config);
This is so frustrating, the class Facebook.php is clearly there.
Why codeigniter is unable to load the classes under a subfolder of libraries ?
Meanwhile it works fine with the classes in libraries root (without subfolder).
This is what inside Facebook.php
<?php
/**
* Copyright 2014 Facebook, Inc.
*
* You are hereby granted a non-exclusive, worldwide, royalty-free license to
* use, copy, modify, and distribute this software in source code or binary
* form for use in connection with the web services and APIs provided by
* Facebook.
*
* As with any software that integrates with the Facebook platform, your use
* of this software is subject to the Facebook Developer Principles and
* Policies [http://developers.facebook.com/policy/]. This copyright notice
* shall be included in all copies or substantial portions of the software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*
*/
namespace Facebook;
use Facebook\Authentication\AccessToken;
use Facebook\Authentication\OAuth2Client;
use Facebook\FileUpload\FacebookFile;
use Facebook\FileUpload\FacebookVideo;
use Facebook\GraphNodes\GraphEdge;
use Facebook\Url\UrlDetectionInterface;
use Facebook\Url\FacebookUrlDetectionHandler;
use Facebook\PseudoRandomString\PseudoRandomStringGeneratorInterface;
use Facebook\PseudoRandomString\McryptPseudoRandomStringGenerator;
use Facebook\PseudoRandomString\OpenSslPseudoRandomStringGenerator;
use Facebook\PseudoRandomString\UrandomPseudoRandomStringGenerator;
use Facebook\HttpClients\FacebookHttpClientInterface;
use Facebook\HttpClients\FacebookCurlHttpClient;
use Facebook\HttpClients\FacebookStreamHttpClient;
use Facebook\HttpClients\FacebookGuzzleHttpClient;
use Facebook\PersistentData\PersistentDataInterface;
use Facebook\PersistentData\FacebookSessionPersistentDataHandler;
use Facebook\PersistentData\FacebookMemoryPersistentDataHandler;
use Facebook\Helpers\FacebookCanvasHelper;
use Facebook\Helpers\FacebookJavaScriptHelper;
use Facebook\Helpers\FacebookPageTabHelper;
use Facebook\Helpers\FacebookRedirectLoginHelper;
use Facebook\Exceptions\FacebookSDKException;
/**
* Class Facebook
*
* #package Facebook
*/
class Facebook
{
/**
* #const string Version number of the Facebook PHP SDK.
*/
const VERSION = '5.0.0';
/**
* #const string Default Graph API version for requests.
*/
const DEFAULT_GRAPH_VERSION = 'v2.4';
/**
* #const string The name of the environment variable that contains the app ID.
*/
const APP_ID_ENV_NAME = 'FACEBOOK_APP_ID';
/**
* #const string The name of the environment variable that contains the app secret.
*/
const APP_SECRET_ENV_NAME = 'FACEBOOK_APP_SECRET';
/**
* #var FacebookApp The FacebookApp entity.
*/
protected $app;
/**
* #var FacebookClient The Facebook client service.
*/
protected $client;
/**
* #var OAuth2Client The OAuth 2.0 client service.
*/
protected $oAuth2Client;
/**
* #var UrlDetectionInterface|null The URL detection handler.
*/
protected $urlDetectionHandler;
/**
* #var PseudoRandomStringGeneratorInterface|null The cryptographically secure pseudo-random string generator.
*/
protected $pseudoRandomStringGenerator;
/**
* #var AccessToken|null The default access token to use with requests.
*/
protected $defaultAccessToken;
/**
* #var string|null The default Graph version we want to use.
*/
protected $defaultGraphVersion;
/**
* #var PersistentDataInterface|null The persistent data handler.
*/
protected $persistentDataHandler;
/**
* #var FacebookResponse|FacebookBatchResponse|null Stores the last request made to Graph.
*/
protected $lastResponse;
/**
* Instantiates a new Facebook super-class object.
*
* #param array $config
*
* #throws FacebookSDKException
*/
public function __construct(array $config = [])
{
$appId = isset($config['app_id']) ? $config['app_id'] : getenv(static::APP_ID_ENV_NAME);
if (!$appId) {
throw new FacebookSDKException('Required "app_id" key not supplied in config and could not find fallback environment variable "' . static::APP_ID_ENV_NAME . '"');
}
$appSecret = isset($config['app_secret']) ? $config['app_secret'] : getenv(static::APP_SECRET_ENV_NAME);
if (!$appSecret) {
throw new FacebookSDKException('Required "app_secret" key not supplied in config and could not find fallback environment variable "' . static::APP_SECRET_ENV_NAME . '"');
}
$this->app = new FacebookApp($appId, $appSecret);
$httpClientHandler = null;
if (isset($config['http_client_handler'])) {
if ($config['http_client_handler'] instanceof FacebookHttpClientInterface) {
$httpClientHandler = $config['http_client_handler'];
} elseif ($config['http_client_handler'] === 'curl') {
$httpClientHandler = new FacebookCurlHttpClient();
} elseif ($config['http_client_handler'] === 'stream') {
$httpClientHandler = new FacebookStreamHttpClient();
} elseif ($config['http_client_handler'] === 'guzzle') {
$httpClientHandler = new FacebookGuzzleHttpClient();
} else {
throw new \InvalidArgumentException('The http_client_handler must be set to "curl", "stream", "guzzle", or be an instance of Facebook\HttpClients\FacebookHttpClientInterface');
}
}
$enableBeta = isset($config['enable_beta_mode']) && $config['enable_beta_mode'] === true;
$this->client = new FacebookClient($httpClientHandler, $enableBeta);
if (isset($config['url_detection_handler'])) {
if ($config['url_detection_handler'] instanceof UrlDetectionInterface) {
$this->urlDetectionHandler = $config['url_detection_handler'];
} else {
throw new \InvalidArgumentException('The url_detection_handler must be an instance of Facebook\Url\UrlDetectionInterface');
}
}
if (isset($config['pseudo_random_string_generator'])) {
if ($config['pseudo_random_string_generator'] instanceof PseudoRandomStringGeneratorInterface) {
$this->pseudoRandomStringGenerator = $config['pseudo_random_string_generator'];
} elseif ($config['pseudo_random_string_generator'] === 'mcrypt') {
$this->pseudoRandomStringGenerator = new McryptPseudoRandomStringGenerator();
} elseif ($config['pseudo_random_string_generator'] === 'openssl') {
$this->pseudoRandomStringGenerator = new OpenSslPseudoRandomStringGenerator();
} elseif ($config['pseudo_random_string_generator'] === 'urandom') {
$this->pseudoRandomStringGenerator = new UrandomPseudoRandomStringGenerator();
} else {
throw new \InvalidArgumentException('The pseudo_random_string_generator must be set to "mcrypt", "openssl", or "urandom", or be an instance of Facebook\PseudoRandomString\PseudoRandomStringGeneratorInterface');
}
}
if (isset($config['persistent_data_handler'])) {
if ($config['persistent_data_handler'] instanceof PersistentDataInterface) {
$this->persistentDataHandler = $config['persistent_data_handler'];
} elseif ($config['persistent_data_handler'] === 'session') {
$this->persistentDataHandler = new FacebookSessionPersistentDataHandler();
} elseif ($config['persistent_data_handler'] === 'memory') {
$this->persistentDataHandler = new FacebookMemoryPersistentDataHandler();
} else {
throw new \InvalidArgumentException('The persistent_data_handler must be set to "session", "memory", or be an instance of Facebook\PersistentData\PersistentDataInterface');
}
}
if (isset($config['default_access_token'])) {
$this->setDefaultAccessToken($config['default_access_token']);
}
if (isset($config['default_graph_version'])) {
$this->defaultGraphVersion = $config['default_graph_version'];
} else {
// #todo v6: Throw an InvalidArgumentException if "default_graph_version" is not set
$this->defaultGraphVersion = static::DEFAULT_GRAPH_VERSION;
}
}
/**
* Returns the FacebookApp entity.
*
* #return FacebookApp
*/
public function getApp()
{
return $this->app;
}
/**
* Returns the FacebookClient service.
*
* #return FacebookClient
*/
public function getClient()
{
return $this->client;
}
/**
* Returns the OAuth 2.0 client service.
*
* #return OAuth2Client
*/
public function getOAuth2Client()
{
if (!$this->oAuth2Client instanceof OAuth2Client) {
$app = $this->getApp();
$client = $this->getClient();
$this->oAuth2Client = new OAuth2Client($app, $client, $this->defaultGraphVersion);
}
return $this->oAuth2Client;
}
/**
* Returns the last response returned from Graph.
*
* #return FacebookResponse|FacebookBatchResponse|null
*/
public function getLastResponse()
{
return $this->lastResponse;
}
/**
* Returns the URL detection handler.
*
* #return UrlDetectionInterface
*/
public function getUrlDetectionHandler()
{
if (!$this->urlDetectionHandler instanceof UrlDetectionInterface) {
$this->urlDetectionHandler = new FacebookUrlDetectionHandler();
}
return $this->urlDetectionHandler;
}
/**
* Returns the default AccessToken entity.
*
* #return AccessToken|null
*/
public function getDefaultAccessToken()
{
return $this->defaultAccessToken;
}
/**
* Sets the default access token to use with requests.
*
* #param AccessToken|string $accessToken The access token to save.
*
* #throws \InvalidArgumentException
*/
public function setDefaultAccessToken($accessToken)
{
if (is_string($accessToken)) {
$this->defaultAccessToken = new AccessToken($accessToken);
return;
}
if ($accessToken instanceof AccessToken) {
$this->defaultAccessToken = $accessToken;
return;
}
throw new \InvalidArgumentException('The default access token must be of type "string" or Facebook\AccessToken');
}
/**
* Returns the default Graph version.
*
* #return string
*/
public function getDefaultGraphVersion()
{
return $this->defaultGraphVersion;
}
/**
* Returns the redirect login helper.
*
* #return FacebookRedirectLoginHelper
*/
public function getRedirectLoginHelper()
{
return new FacebookRedirectLoginHelper(
$this->getOAuth2Client(),
$this->persistentDataHandler,
$this->urlDetectionHandler,
$this->pseudoRandomStringGenerator
);
}
/**
* Returns the JavaScript helper.
*
* #return FacebookJavaScriptHelper
*/
public function getJavaScriptHelper()
{
return new FacebookJavaScriptHelper($this->app, $this->client, $this->defaultGraphVersion);
}
/**
* Returns the canvas helper.
*
* #return FacebookCanvasHelper
*/
public function getCanvasHelper()
{
return new FacebookCanvasHelper($this->app, $this->client, $this->defaultGraphVersion);
}
/**
* Returns the page tab helper.
*
* #return FacebookPageTabHelper
*/
public function getPageTabHelper()
{
return new FacebookPageTabHelper($this->app, $this->client, $this->defaultGraphVersion);
}
/**
* Sends a GET request to Graph and returns the result.
*
* #param string $endpoint
* #param AccessToken|string|null $accessToken
* #param string|null $eTag
* #param string|null $graphVersion
*
* #return FacebookResponse
*
* #throws FacebookSDKException
*/
public function get($endpoint, $accessToken = null, $eTag = null, $graphVersion = null)
{
return $this->sendRequest(
'GET',
$endpoint,
$params = [],
$accessToken,
$eTag,
$graphVersion
);
}
/**
* Sends a POST request to Graph and returns the result.
*
* #param string $endpoint
* #param array $params
* #param AccessToken|string|null $accessToken
* #param string|null $eTag
* #param string|null $graphVersion
*
* #return FacebookResponse
*
* #throws FacebookSDKException
*/
public function post($endpoint, array $params = [], $accessToken = null, $eTag = null, $graphVersion = null)
{
return $this->sendRequest(
'POST',
$endpoint,
$params,
$accessToken,
$eTag,
$graphVersion
);
}
/**
* Sends a DELETE request to Graph and returns the result.
*
* #param string $endpoint
* #param array $params
* #param AccessToken|string|null $accessToken
* #param string|null $eTag
* #param string|null $graphVersion
*
* #return FacebookResponse
*
* #throws FacebookSDKException
*/
public function delete($endpoint, array $params = [], $accessToken = null, $eTag = null, $graphVersion = null)
{
return $this->sendRequest(
'DELETE',
$endpoint,
$params,
$accessToken,
$eTag,
$graphVersion
);
}
/**
* Sends a request to Graph for the next page of results.
*
* #param GraphEdge $graphEdge The GraphEdge to paginate over.
*
* #return GraphEdge|null
*
* #throws FacebookSDKException
*/
public function next(GraphEdge $graphEdge)
{
return $this->getPaginationResults($graphEdge, 'next');
}
/**
* Sends a request to Graph for the previous page of results.
*
* #param GraphEdge $graphEdge The GraphEdge to paginate over.
*
* #return GraphEdge|null
*
* #throws FacebookSDKException
*/
public function previous(GraphEdge $graphEdge)
{
return $this->getPaginationResults($graphEdge, 'previous');
}
/**
* Sends a request to Graph for the next page of results.
*
* #param GraphEdge $graphEdge The GraphEdge to paginate over.
* #param string $direction The direction of the pagination: next|previous.
*
* #return GraphEdge|null
*
* #throws FacebookSDKException
*/
public function getPaginationResults(GraphEdge $graphEdge, $direction)
{
$paginationRequest = $graphEdge->getPaginationRequest($direction);
if (!$paginationRequest) {
return null;
}
$this->lastResponse = $this->client->sendRequest($paginationRequest);
// Keep the same GraphNode subclass
$subClassName = $graphEdge->getSubClassName();
$graphEdge = $this->lastResponse->getGraphEdge($subClassName, false);
return count($graphEdge) > 0 ? $graphEdge : null;
}
/**
* Sends a request to Graph and returns the result.
*
* #param string $method
* #param string $endpoint
* #param array $params
* #param AccessToken|string|null $accessToken
* #param string|null $eTag
* #param string|null $graphVersion
*
* #return FacebookResponse
*
* #throws FacebookSDKException
*/
public function sendRequest($method, $endpoint, array $params = [], $accessToken = null, $eTag = null, $graphVersion = null)
{
$accessToken = $accessToken ?: $this->defaultAccessToken;
$graphVersion = $graphVersion ?: $this->defaultGraphVersion;
$request = $this->request($method, $endpoint, $params, $accessToken, $eTag, $graphVersion);
return $this->lastResponse = $this->client->sendRequest($request);
}
/**
* Sends a batched request to Graph and returns the result.
*
* #param array $requests
* #param AccessToken|string|null $accessToken
* #param string|null $graphVersion
*
* #return FacebookBatchResponse
*
* #throws FacebookSDKException
*/
public function sendBatchRequest(array $requests, $accessToken = null, $graphVersion = null)
{
$accessToken = $accessToken ?: $this->defaultAccessToken;
$graphVersion = $graphVersion ?: $this->defaultGraphVersion;
$batchRequest = new FacebookBatchRequest(
$this->app,
$requests,
$accessToken,
$graphVersion
);
return $this->lastResponse = $this->client->sendBatchRequest($batchRequest);
}
/**
* Instantiates a new FacebookRequest entity.
*
* #param string $method
* #param string $endpoint
* #param array $params
* #param AccessToken|string|null $accessToken
* #param string|null $eTag
* #param string|null $graphVersion
*
* #return FacebookRequest
*
* #throws FacebookSDKException
*/
public function request($method, $endpoint, array $params = [], $accessToken = null, $eTag = null, $graphVersion = null)
{
$accessToken = $accessToken ?: $this->defaultAccessToken;
$graphVersion = $graphVersion ?: $this->defaultGraphVersion;
return new FacebookRequest(
$this->app,
$accessToken,
$method,
$endpoint,
$params,
$eTag,
$graphVersion
);
}
/**
* Factory to create FacebookFile's.
*
* #param string $pathToFile
*
* #return FacebookFile
*
* #throws FacebookSDKException
*/
public function fileToUpload($pathToFile)
{
return new FacebookFile($pathToFile);
}
/**
* Factory to create FacebookVideo's.
*
* #param string $pathToFile
*
* #return FacebookVideo
*
* #throws FacebookSDKException
*/
public function videoToUpload($pathToFile)
{
return new FacebookVideo($pathToFile);
}
}
Note : I am using Ubuntu OS
just use
$this->load->library('facebook/facebook'); // Automatically picks appId and secret from config
// OR
// You can pass different one like this
$this->load->library('facebook/facebook', array(
'appId' => 'APP_ID',
'secret' => 'SECRET',
));
and inside facebook.php class name should be
class Facebook {
Facebook SDK PHP v4 & CodeIgniter and github download
$this->load->library('Facebook\facebook', array('app_id' => 'your value', 'app_secret' => 'your value'));
I did this and the problem was solved (on windows machine) And also add
require_once("autoload.php")
on Facebook class just below namespace so your can get rid of other exception related errors.

Categories