Serpito

Login with Linkedin OAuth – Linkedin Hesabı ile Giriş Sistemi

OAuth sistemlerine giriş yapmışken, piyasada kullanılan popüler oauth sistemlerini tamamlayalım dedik.  Bu yazıda 250 milyon kullanıcıya hitap eden Business Network Linkedin hesaplarıyla websitenize giriş sistemini ele alıyoruz.

Ne benim ne de okuyucunun analiz veya yorum için fazla vakti var.  Çok fazla edebiyat yapmadan , sistemin yapısı ve kodlara geçelim hemen.

1. Linkedin Developer Network Uygulama oluştur

Diğerlerinde olduğu için Developer app oluşturmamız gerekiyor. Linkedin için Geliştirici Ağı adındaki ekrana gidip , Yeni uygulama oluşturmamız lazım.

Uygulamayı kaydettikten sonra, aşağıdaki görseldeki gibi, App Details kısmında; Api Anahtarı ve Gizli Anahtar verilerini kullanacağız.

Uygulamanın çalıştığı klasördeki dosya yapıları şu şekilde;

  • index.php
  • demo.php
  • linkedin.php
  • OAuth.php
  • composer.json
Şimdi kodlara geçelim;

 

index.php


<?php
if($_GET&#91;'login'&#93;){
$config&#91;'base_url'&#93; = 'http://demo.serpito.com/linkedin-login/index.phpp';
$config&#91;'callback_url'&#93; = 'http://demo.serpito.com/linkedin-login/demo.php';
$config&#91;'linkedin_access'&#93; = 'vf5g6dos8ka8';
$config&#91;'linkedin_secret'&#93; = 'KzQYquaGNznu3Zph';

include_once "linkedin.php";

$linkedin = new LinkedIn($config&#91;'linkedin_access'&#93;, $config&#91;'linkedin_secret'&#93;, $config&#91;'callback_url'&#93; );
//$linkedin->debug = true;
$linkedin->getRequestToken();
$_SESSION['requestToken'] = serialize($linkedin->request_token);

//echo "Authorization URL: " . $linkedin->generateAuthorizeUrl() . "\n\n";
header("Location: " . $linkedin->generateAuthorizeUrl());
}else{
?>

<a class="button medium blue radius" href="?login=true">Linkedin ile Giriş Yapın </a><br><br>
<span style='font-size:12px;color:#999'>Linkedin hesabınız ile giriş yapabilirsiniz</span>
<?php

}
?>

index.php kodları kullanıcının request_token bilgileri ile yetkilendirilmesini gerçekleştiriyor, ve başarılı işlem sonunda, callback_url bağlantısına yönlendiriliyor. Bu uygulamada , demo.php callback_url  olarak tanımlandı.

demo.php

<?php

$config&#91;'base_url'&#93; = 'http://demo.serpito.com/linkedin-login/index.phpp';
$config&#91;'callback_url'&#93; = 'http://demo.serpito.com/linkedin-login/demo.php';
$config&#91;'linkedin_access'&#93; = 'vf5g6dos8ka8';
$config&#91;'linkedin_secret'&#93; = 'KzQYquaGNznu3Zph';

include_once "linkedin.php";

# First step is to initialize with your consumer key and secret. We'll use an out-of-band oauth_callback
$linkedin = new LinkedIn($config&#91;'linkedin_access'&#93;, $config&#91;'linkedin_secret'&#93;, $config&#91;'callback_url'&#93; );
//$linkedin->debug = true;

if (isset($_REQUEST['oauth_verifier'])){
$_SESSION['oauth_verifier'] = $_REQUEST['oauth_verifier'];

$linkedin->request_token = unserialize($_SESSION['requestToken']);
$linkedin->oauth_verifier = $_SESSION['oauth_verifier'];
$linkedin->getAccessToken($_REQUEST['oauth_verifier']);

$_SESSION['oauth_access_token'] = serialize($linkedin->access_token);
header("Location: " . $config['callback_url']);
exit;
}
else{
$linkedin->request_token = unserialize($_SESSION['requestToken']);
$linkedin->oauth_verifier = $_SESSION['oauth_verifier'];
$linkedin->access_token = unserialize($_SESSION['oauth_access_token']);
}
# You now have a $linkedin->access_token and can make calls on behalf of the current member
$xml_response = $linkedin->getProfile("~:(id,first-name,last-name,headline,picture-url)");
$xml = simplexml_load_string($xml_response);
$name= $xml->attributes("first-name");
$lastname= $xml->attributes("last-name");
?>
<h3>Gelen XML Data </h3>
<ul>
<li><img src="<?php echo $xml->{'picture-url'}; ?>" /></li>
<li>user id: <?php echo $xml->{'id'}; ?></li>
<li>İsim: <?php echo $xml->{'first-name'}; ?></li>
<li>Soyisim: <?php echo $xml->{'last-name'}; ?></li>
<li>Meslek / Pozisyon: <?php echo $xml->{'headline'}; ?></li>

</ul>
<pre>
<?php
print_r($xml);
?>
</pre>