include/externalAPI/Facebook/facebook.php
Extends the BaseFacebook class with the intent of using PHP sessions to store user ids and access tokens.
- Parent(s)
- \BaseFacebook
- Author
- Naitik Shah
Constants
Properties

$CURL_OPTS= 'array(
CURLOPT_CONNECTTIMEOUT => 10,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 60,
CURLOPT_USERAGENT => 'facebook-php-3.2',
)'
array(
CURLOPT_CONNECTTIMEOUT => 10,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 60,
CURLOPT_USERAGENT => 'facebook-php-3.2',
)Details- Type
- n/a
- Inherited_from
- \BaseFacebook::$$CURL_OPTS

$DOMAIN_MAP= 'array(
'api' => 'https://api.facebook.com/',
'api_video' => 'https://api-video.facebook.com/',
'api_read' => 'https://api-read.facebook.com/',
'graph' => 'https://graph.facebook.com/',
'graph_video' => 'https://graph-video.facebook.com/',
'www' => 'https://www.facebook.com/',
)'
array(
'api' => 'https://api.facebook.com/',
'api_video' => 'https://api-video.facebook.com/',
'api_read' => 'https://api-read.facebook.com/',
'graph' => 'https://graph.facebook.com/',
'graph_video' => 'https://graph-video.facebook.com/',
'www' => 'https://www.facebook.com/',
)Details- Type
- n/a
- Inherited_from
- \BaseFacebook::$$DOMAIN_MAP

$DROP_QUERY_PARAMS= 'array(
'code',
'state',
'signed_request',
)'
List of query parameters that get automatically dropped when rebuilding the current URL.
Inherited from: \BaseFacebook::$$DROP_QUERY_PARAMSarray(
'code',
'state',
'signed_request',
)Details- Type
- n/a
- Inherited_from
- \BaseFacebook::$$DROP_QUERY_PARAMS

string
$accessToken= 'null'
The OAuth access token received in exchange for a valid authorization code. null means the access token has yet to be determined.
Inherited from: \BaseFacebook::$$accessTokennullDetails- Type
- string
- Inherited_from
- \BaseFacebook::$$accessToken

boolean
$fileUploadSupport= 'false'
Indicates if the CURL based @ syntax for file uploads is enabled.
Inherited from: \BaseFacebook::$$fileUploadSupportfalseDetails- Type
- boolean
- Inherited_from
- \BaseFacebook::$$fileUploadSupport

$kSupportedKeys= 'array('state', 'code', 'access_token', 'user_id')'
array('state', 'code', 'access_token', 'user_id')Details- Type
- n/a

$state= ''
A CSRF state variable to assist in the defense against CSRF attacks.
Inherited from: \BaseFacebook::$$state- Type
- n/a
- Inherited_from
- \BaseFacebook::$$state

boolean
$trustForwarded= 'false'
Indicates if we trust HTTP_X_FORWARDED_* headers.
Inherited from: \BaseFacebook::$$trustForwardedfalseDetails- Type
- boolean
- Inherited_from
- \BaseFacebook::$$trustForwarded

integer
$user= ''
The ID of the Facebook user, or 0 if the user is logged out.
Inherited from: \BaseFacebook::$$user- Type
- integer
- Inherited_from
- \BaseFacebook::$$user
Methods

__construct(
Array $config
)
:
voidIdentical to the parent constructor, except that we start a PHP session to store the user ID and access token if during the course of execution we discover them.
The configuration: - appId: the application ID - secret: the application secret - fileUpload: (optional) boolean indicating if file uploads are enabled
| Name | Type | Description |
|---|---|---|
| $config | Array | the application configuration. Additionally accepts "sharedSession" as a boolean to turn on a secondary cookie for environments with a shared session (that is, your app shares the domain with other apps). |

_graph(
string $path, string $method
=
'GET', array $params
=
array()
)
:
mixed
| Name | Type | Description |
|---|---|---|
| $path | string | The path (required) |
| $method | string | The http method (default 'GET') |
| $params | array | The query/post data |
| Type | Description |
|---|---|
| mixed | The decoded response object |
| Exception | Description |
|---|---|
| \FacebookApiException |

_oauthRequest(
string $url, array $params
)
:
string
| Name | Type | Description |
|---|---|---|
| $url | string | The path (required) |
| $params | array | The query/post data |
| Type | Description |
|---|---|
| string | The decoded response object |
| Exception | Description |
|---|---|
| \FacebookApiException |

_restserver(
array $params
)
:
mixed
| Name | Type | Description |
|---|---|---|
| $params | array | Method call object |
| Type | Description |
|---|---|
| mixed | The decoded response object |
| Exception | Description |
|---|---|
| \FacebookApiException |

base64UrlDecode(
string $input
)
:
stringBase64 encoding that doesn't need to be urlencode()ed.
Inherited from: \BaseFacebook::base64UrlDecode()Exactly the same as base64_encode except it uses - instead of + _ instead of / No padded =
| Name | Type | Description |
|---|---|---|
| $input | string | base64UrlEncoded string |
| Type | Description |
|---|---|
| string |

base64UrlEncode(
string $input
)
:
stringBase64 encoding that doesn't need to be urlencode()ed.
Inherited from: \BaseFacebook::base64UrlEncode()Exactly the same as base64_encode except it uses - instead of + _ instead of /
| Name | Type | Description |
|---|---|---|
| $input | string | string |
| Type | Description |
|---|---|
| string | base64Url encoded string |

clearPersistentData(
string $key
)
:
voidClear the data with $key from the persistent storage
| Name | Type | Description |
|---|---|---|
| $key | string |

errorLog(
string $msg
)
:
voidPrints to the error log if you aren't in command line mode.
Inherited from: \BaseFacebook::errorLog()| Name | Type | Description |
|---|---|---|
| $msg | string | Log message |

establishCSRFTokenState(
)
:
voidLays down a CSRF state token for this process.
Inherited from: \BaseFacebook::establishCSRFTokenState()
getAccessToken(
)
:
stringDetermines the access token that should be used for API calls.
Inherited from: \BaseFacebook::getAccessToken()The first time this is called, $this->accessToken is set equal to either a valid user access token, or it's set to the application access token if a valid user access token wasn't available. Subsequent calls return whatever the first call returned.
| Type | Description |
|---|---|
| string | The access token |

getAccessTokenFromCode(
string $code, $redirect_uri
=
null
)
:
mixedRetrieves an access token for the given authorization code (previously generated from www.facebook.com on behalf of a specific user). The authorization code is sent to graph.facebook.com and a legitimate access token is generated provided the access token and the user for which it was generated all match, and the user is either logged in to Facebook or has granted an offline access permission.
Inherited from: \BaseFacebook::getAccessTokenFromCode()| Name | Type | Description |
|---|---|---|
| $code | string | An authorization code. |
| $redirect_uri |
| Type | Description |
|---|---|
| mixed | An access token exchanged for the authorization code, or false if an access token could not be generated. |

getApiUrl(
\$method $method
)
:
string
| Name | Type | Description |
|---|---|---|
| $method | \$method | String the method name. |
| Type | Description |
|---|---|
| string | The URL for the given parameters |

getApplicationAccessToken(
)
:
stringReturns the access token that should be used for logged out users when no authorization code is available.
Inherited from: \BaseFacebook::getApplicationAccessToken()| Type | Description |
|---|---|
| string | The application access token, useful for gathering public information about users and applications. |

getCode(
)
:
mixedGet the authorization code from the query parameters, if it exists, and otherwise return false to signal no authorization code was discoverable.
Inherited from: \BaseFacebook::getCode()| Type | Description |
|---|---|
| mixed | The authorization code, or false if the authorization code could not be determined. |

getCurrentUrl(
)
:
stringReturns the Current URL, stripping it of known FB parameters that should not persist.
Inherited from: \BaseFacebook::getCurrentUrl()| Type | Description |
|---|---|
| string | The current URL |

getFileUploadSupport(
)
:
boolean
| Type | Description |
|---|---|
| boolean | true if and only if the server supports file upload. |

getLoginStatusUrl(
array $params
=
array()
)
:
stringGet a login status URL to fetch the status from Facebook.
Inherited from: \BaseFacebook::getLoginStatusUrl()The parameters: - ok_session: the URL to go to if a session is found - no_session: the URL to go to if the user is not connected - no_user: the URL to go to if the user is not signed into facebook
| Name | Type | Description |
|---|---|---|
| $params | array | Provide custom parameters |
| Type | Description |
|---|---|
| string | The URL for the logout flow |

getLoginUrl(
array $params
=
array()
)
:
stringGet a Login URL for use with redirects. By default, full page redirect is assumed. If you are using the generated URL with a window.open() call in JavaScript, you can pass in display=popup as part of the $params.
Inherited from: \BaseFacebook::getLoginUrl()The parameters: - redirect_uri: the url to go to after a successful login - scope: comma separated list of requested extended perms
| Name | Type | Description |
|---|---|---|
| $params | array | Provide custom parameters |
| Type | Description |
|---|---|
| string | The URL for the login flow |

getLogoutUrl(
array $params
=
array()
)
:
stringGet a Logout URL suitable for use with redirects.
Inherited from: \BaseFacebook::getLogoutUrl()The parameters: - next: the url to go to after a successful logout
| Name | Type | Description |
|---|---|---|
| $params | array | Provide custom parameters |
| Type | Description |
|---|---|
| string | The URL for the logout flow |

getMetadataCookie(
)
:
\anParses the metadata cookie that our Javascript API set
Inherited from: \BaseFacebook::getMetadataCookie()| Type | Description |
|---|---|
| \an | array mapping key to value |

getMetadataCookieName(
)
:
stringConstructs and returns the name of the coookie that potentially contain metadata. The cookie is not set by the BaseFacebook class, but it may be set by the JavaScript SDK.
Inherited from: \BaseFacebook::getMetadataCookieName()| Type | Description |
|---|---|
| string | the name of the cookie that would house metadata. |

getPersistentData(
string $key, boolean $default
=
false
)
:
mixedGet the data for $key, persisted by BaseFacebook::setPersistentData()
| Name | Type | Description |
|---|---|---|
| $key | string | The key of the data to retrieve |
| $default | boolean | The default value to return if $key is not found |
| Type | Description |
|---|---|
| mixed |

getSignedRequest(
)
:
stringRetrieve the signed request, either from a request parameter or, if not present, from a cookie.
Inherited from: \BaseFacebook::getSignedRequest()| Type | Description |
|---|---|
| string | the signed request, if available, or null otherwise. |

getSignedRequestCookieName(
)
:
stringConstructs and returns the name of the cookie that potentially houses the signed request for the app user.
Inherited from: \BaseFacebook::getSignedRequestCookieName()The cookie is not set by the BaseFacebook class, but it may be set by the JavaScript SDK.
| Type | Description |
|---|---|
| string | the name of the cookie that would house the signed request value. |

getUrl(
\$name $name, \$path $path
=
'', \$params $params
=
array()
)
:
stringBuild the URL for given domain alias, path and parameters.
Inherited from: \BaseFacebook::getUrl()| Name | Type | Description |
|---|---|---|
| $name | \$name | string The name of the domain |
| $path | \$path | string Optional path (without a leading slash) |
| $params | \$params | array Optional query parameters |
| Type | Description |
|---|---|
| string | The URL for the given parameters |

getUser(
)
:
stringGet the UID of the connected user, or 0 if the Facebook user is not connected.
Inherited from: \BaseFacebook::getUser()| Type | Description |
|---|---|
| string | the UID if available. |

getUserAccessToken(
)
:
stringDetermines and returns the user access token, first using the signed request if present, and then falling back on the authorization code if present. The intent is to return a valid user access token, or false if one is determined to not be available.
Inherited from: \BaseFacebook::getUserAccessToken()| Type | Description |
|---|---|
| string | A valid user access token, or false if one could not be determined. |

getUserFromAccessToken(
)
:
integerRetrieves the UID with the understanding that $this->accessToken has already been set and is seemingly legitimate. It relies on Facebook's Graph API to retrieve user information and then extract the user ID.
Inherited from: \BaseFacebook::getUserFromAccessToken()| Type | Description |
|---|---|
| integer | Returns the UID of the Facebook user, or 0 if the Facebook user could not be determined. |

getUserFromAvailableData(
)
:
integerDetermines the connected user by first examining any signed requests, then considering an authorization code, and then falling back to any persistent store storing the user.
Inherited from: \BaseFacebook::getUserFromAvailableData()| Type | Description |
|---|---|
| integer | The id of the connected Facebook user, or 0 if no such user exists. |

isVideoPost(
string $path, string $method
=
'GET'
)
:
boolean
| Name | Type | Description |
|---|---|---|
| $path | string | The path |
| $method | string | The http method (default 'GET') |
| Type | Description |
|---|---|
| boolean | true if this is video post |

makeRequest(
string $url, array $params, \CurlHandler $ch
=
null
)
:
stringMakes an HTTP request. This method can be overridden by subclasses if developers want to do fancier things or use something other than curl to make the request.
Inherited from: \BaseFacebook::makeRequest()| Name | Type | Description |
|---|---|---|
| $url | string | The URL to make the request to |
| $params | array | The parameters to use for the POST body |
| $ch | \CurlHandler | Initialized curl handle |
| Type | Description |
|---|---|
| string | The response text |

makeSignedRequest(
array $data
)
:
stringMakes a signed_request blob using the given data.
Inherited from: \BaseFacebook::makeSignedRequest()| Name | Type | Description |
|---|---|---|
| $data | array | The data array. |
| Type | Description |
|---|---|
| string | The signed request. |

parseSignedRequest(
string $signed_request
)
:
arrayParses a signed_request and validates the signature.
Inherited from: \BaseFacebook::parseSignedRequest()| Name | Type | Description |
|---|---|---|
| $signed_request | string | A signed token |
| Type | Description |
|---|---|
| array | The payload inside it or null if the sig is wrong |

setAccessToken(
string $access_token
)
:
\BaseFacebookSets the access token for api calls. Use this if you get your access token by other means and just want the SDK to use it.
Inherited from: \BaseFacebook::setAccessToken()| Name | Type | Description |
|---|---|---|
| $access_token | string | an access token. |
| Type | Description |
|---|---|
| \BaseFacebook |

setApiSecret(
string $apiSecret
)
:
\BaseFacebook
| Name | Type | Description |
|---|---|---|
| $apiSecret | string | The App Secret |
| Type | Description |
|---|---|
| \BaseFacebook |

setAppId(
string $appId
)
:
\BaseFacebook
| Name | Type | Description |
|---|---|---|
| $appId | string | The Application ID |
| Type | Description |
|---|---|
| \BaseFacebook |

setAppSecret(
string $appSecret
)
:
\BaseFacebook
| Name | Type | Description |
|---|---|---|
| $appSecret | string | The App Secret |
| Type | Description |
|---|---|
| \BaseFacebook |

setExtendedAccessToken(
)
:
voidExtend an access token, while removing the short-lived token that might have been generated via client-side flow. Thanks to http://bit.ly/b0Pt0H for the workaround.
Inherited from: \BaseFacebook::setExtendedAccessToken()
setFileUploadSupport(
boolean $fileUploadSupport
)
:
\BaseFacebook
| Name | Type | Description |
|---|---|---|
| $fileUploadSupport | boolean | The file upload support status. |
| Type | Description |
|---|---|
| \BaseFacebook |

setPersistentData(
string $key, array $value
)
:
voidProvides the implementations of the inherited abstract methods. The implementation uses PHP sessions to maintain a store for authorization codes, user ids, CSRF states, and access tokens.
| Name | Type | Description |
|---|---|---|
| $key | string | |
| $value | array |

shouldRetainParam(
string $param
)
:
booleanReturns true if and only if the key or key/value pair should be retained as part of the query string. This amounts to a brute-force search of the very small list of Facebook-specific params that should be stripped out.
Inherited from: \BaseFacebook::shouldRetainParam()| Name | Type | Description |
|---|---|---|
| $param | string | A key or key/value pair within a URL's query (e.g. 'foo=a', 'foo=', or 'foo'. |
| Type | Description |
|---|---|
| boolean |

throwAPIException(
\$result $result
)
:
voidAnalyzes the supplied result to see if it was thrown because the access token is no longer valid. If that is the case, then we destroy the session.
Inherited from: \BaseFacebook::throwAPIException()| Name | Type | Description |
|---|---|---|
| $result | \$result | array A record storing the error message returned by a failed API call. |

useFileUploadSupport(
)
:
booleanDEPRECATED! Please use getFileUploadSupport instead.
Inherited from: \BaseFacebook::useFileUploadSupport()Get the file upload support status.
| Type | Description |
|---|---|
| boolean | true if and only if the server supports file upload. |