Xing PHP SDK
This is a PHP Wrapper for the Xing API based on guzzle 6.
It simplifies the process of authenticating and requesting permission., (*1)
Installation
The best way to install Xing SDK is through composer:, (*2)
The best way to install php-sdk-for-XING is through composer:, (*3)
-
Download the composer.phar executable or use the installer., (*4)
sh
$ curl -sS https://getcomposer.org/installer | php, (*5)
-
add the following to your composer.json, (*6)
``` javascript
{
"require": {
"bahuma/xing-php-sdk": "dev-master"
}
}, (*7)
or just run
``` sh
$ composer require bahuma/xing-php-sdk
-
Run Composer: php composer.phar install, (*8)
And you should be done., (*9)
Example
You can find an advanced example in the file sample.php., (*10)
I recommend open this file and then read on., (*11)
Obtaining an Access Token
To get an access token you first have to register your application.
Head over to https://dev.xing.com and register yourself for a Xing application
to get the consumer key/secret which you have to use with this package., (*12)
Then you have to call the following functions in this order:, (*13)
-
getRequestToken, (*14)
Insert your consumer_key and your consumer_secret into the config array., (*15)
Leave the token and token_secret blank., (*16)
Then create a new XingSdk Object with this config., (*17)
``` php
$config = [
'consumer_key' => CONSUMER_KEY,
'consumer_secret' => CONSUMER_SECRET,
'token' => '',
'token_secret' => '',
];, (*18)
$xingSdk = new XingSDK($config);, (*19)
Then call the function with an url where the users are being redirected to after accepting the
permissions. This URL is the callback-url.
``` php
$result = $xing_api->getRequestToken("http://dev.bahuma.io/xing2?page=redirect");
The function returns an array with three values., (*20)
Save request_token and request_token_secret temporary. You'll need them in the next step., (*21)
Redirect the user to the authorize_url. This is the page where the user clicks "accept"., (*22)
-
getAccessToken, (*23)
This function should be executed at the callback-url., (*24)
Insert your consumer_key and your consumer_secret into the config array., (*25)
Insert the request_token and request_token_secret from the previous field into the config array., (*26)
Then create a new XingSdk Object with this config., (*27)
``` php
$config = [
'consumer_key' => CONSUMER_KEY,
'consumer_secret' => CONSUMER_SECRET,
'token' => $the_temporary_saved_request_token,
'token_secret' => $the_temporary_saved_request_token_secret,
];, (*28)
$xingSdk = new XingSDK($config);
```, (*29)
Then call the function using the value of the GET-Parameter oauth_verifier, which has been set by
XING., (*30)
php
$result = $xing_api->getAccessToken($_GET['oauth_verifier']);, (*31)
The function returns an array containing the access_token and the access_token_secret for
the user, which has logged in. Save these values in your database or somewhere else where you
can access them later., (*32)
Making calls to the XING-API
Now that you have obtained an access token, you can call the API. For example let's get the profile
details of the user, which has logged in., (*33)
-
Insert your consumer_key and your consumer_secret into the config array.
Insert the access_token and access_token_secret from the user, which you have saved in your
database,into the config array., (*34)
php
$config = array(
'consumer_key' => 'abc123456789xyz',
'consumer_secret' => 'abc123456789xyz',
'token' => $access_token_from_my_database,
'token_secret' => $access_token_secret_from_my_database,
);, (*35)
-
Create a new XingSDK Object.
php
$xingSdk = new XingSDK($config);, (*36)
-
Get the Guzzle Client from the XingSDK Object.
php
$xingClient = $xingSDK->getClient();, (*37)
-
Make the request.
php
// "users/me" is the endpoint of the Xing-API. See https://dev.xing.com/docs/resources
$response = $xingClient->get('users/me');, (*38)
-
Bonus: Get the request in a usable format.
php
$beautiful_response = XingSDK::decodeResponse($response);
print_r($beautiful_response);, (*39)
And that's it., (*40)
For help how to use other request methods (GET/POST/PUT/DELETE/PATCH) or send content
with your request, see the Guzzle Documentation., (*41)