<?xml version="1.0" encoding="UTF-8"?> <rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" ><channel><title>Coders&#039; Grave &#187; authentication</title> <atom:link href="http://codersgrave.com/etiket/authentication/feed/" rel="self" type="application/rss+xml" /><link>http://codersgrave.com</link> <description></description> <lastBuildDate>Tue, 11 Dec 2012 17:27:55 +0000</lastBuildDate> <language>tr-TR</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.5</generator> <item><title>PHP ile Twitter Authentication</title><link>http://codersgrave.com/1279-php-twitter-connect/</link> <comments>http://codersgrave.com/1279-php-twitter-connect/#comments</comments> <pubDate>Tue, 06 Dec 2011 10:41:32 +0000</pubDate> <dc:creator>Önder Yüceur</dc:creator> <category><![CDATA[Genel]]></category> <category><![CDATA[PHP]]></category> <category><![CDATA[Sosyal Ağ]]></category> <category><![CDATA[auth]]></category> <category><![CDATA[authentication]]></category> <category><![CDATA[authorize]]></category> <category><![CDATA[connect]]></category> <category><![CDATA[login]]></category> <category><![CDATA[oauth]]></category> <category><![CDATA[open authentication]]></category> <category><![CDATA[php]]></category> <category><![CDATA[twitter]]></category><guid isPermaLink="false">http://codersgrave.com/?p=1279</guid> <description><![CDATA[Twitter yakın zamanda basic authentication sisteminden open authentication sistemine geçmişti. Bu yazıda Twitter&#8217;ın REST Api&#8217;sindeki kaynaklara erişim için gerekli olan authentication sistemini görelim. Öncelikle bunun için Twitter&#8217;ın PHP için önerdiği kütüphanelere Twitter Libraries adresinden erişebilirsiniz. Ben yazımda TwitterOAuth kütüphanesini kullanacağım. &#8230; <a href="http://codersgrave.com/1279-php-twitter-connect/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<p>Twitter yakın zamanda basic authentication sisteminden open authentication sistemine geçmişti. Bu yazıda Twitter&#8217;ın REST Api&#8217;sindeki kaynaklara erişim için gerekli olan authentication sistemini görelim.</p><p>Öncelikle bunun için Twitter&#8217;ın PHP için önerdiği kütüphanelere <a title="Twitter Libraries" href="https://dev.twitter.com/docs/twitter-libraries#php" target="_blank">Twitter Libraries</a> adresinden erişebilirsiniz. Ben yazımda <a title="TwitterOAuth" href="https://github.com/abraham/twitteroauth" target="_blank">TwitterOAuth</a> kütüphanesini kullanacağım. İlk olarak bunu indirmenizi isteyeyim.<br /> <span id="more-1279"></span></p><p><strong>Önemli Not 1:</strong> Aşağıdaki örnek Framework&#8217;lerden soyutlanmış bir örnektir. Sizin bir Framework&#8217;ünüz varsa kullanımınızı oraya göre düzenlemeniz kolay olacaktır.</p><p><strong>Önemli Not 2:</strong> Bu anlatımda sizin Twitter hesabındanızdan bir adet uygulama açıp gerekli erişim anahtarlarına sahip olduğunuzu düşünüyorum. Uygulama oluşturmak için <a title="Twitter Apps" href="https://dev.twitter.com/apps" target="_blank">Twitter Apps</a> sayfasına gidebilirsiniz.</p><h3>Aşama 1 &#8211; Twitter kütüphanemizi indirelim</h3><p><a title="TwitterOAuth" href="https://github.com/abraham/twitteroauth" target="_blank">TwitterOAuth</a> adresindeki kütüphayi indirelim</p><h3>Aşama 2 &#8211; Proje dosyalarını oluşturalım</h3><p>Aşağıdaki dosyaları projenize ekleyin. Buradaki Twitter dizini içine github&#8217;dan indirdiğiniz TwitterOAuth kütüphanesi içindeki tüm dosyaları kopyalayın.</p><p>|&#8211; project<br /> |     |&#8211; Twitter (TwitterOAuth Kütüphenesi)<br /> |     `index.php (yeni dosya)<br /> |     `connect.php (yeni dosya)<br /> |     `callback.php (yeni dosya)</p><h3>Aşama 3 &#8211; index.php dosyamıza aşağıdakileri ekleyelim</h3><p>Her bir satırın üzerindeki açıklamalar aşamaları anlatmaktadır.</p><pre><code class="prettyprint">&lt;?php

session_start();

// Twitter kütüphanesinden gerekli iki dosyayı(oauth class ve config) 
// require_once ile script'e dahil ediyoruz.
require_once('Twitter/twitteroauth/twitteroauth.php');
require_once('Twitter/config.php');

// callback.php'de oluşacak olan access_token SESSION değerini 
// farklı bir değişkene aktarıyoruz.
$sesAccessToken = $_SESSION['access_token'];

// Twitter oturumunun açık olup olmadığı bilgisini tutan 
// session değerlerinin varolup olnadığının kontrolünü yapıyoruz. 
// Eğer yoksa connect.php'ye yonlendiriyoruz 
if (empty($sesAccessToken) || empty($sesAccessToken['oauth_token']) || empty($sesAccessToken['oauth_token_secret'])) {
  header('Location: /connect.php');
}

// TwitterOAuth sınıfını gerekli başlangıç değerlerini vererek connection 
// nesnesi oluşturuyoruz. Buradaki CONSUMER_KEY ve CONSUMER_SECRET sabit 
// değerlerini Twitter/config.php dosyasından ayarlıyoruz. 
// Bu değerleri dev.twitter.com adresindeki uygulamalar bölümünde ya uygulama 
// açarak ya da mevcut uygulamaların detay bilgileri arasından alabilirsiniz.
$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $sesAccessToken['oauth_token'], $sesAccessToken['oauth_token_secret']);

// Ve yaratılan $connection nesnesinin get metodunu Twitter REST Api'ye 
// ulaşmak için kullanıyoruz. Burada login olan kullanıcının profil bilgileri 
// çekilmektedir.
$content = $connection->get('account/verify_credentials');

?&gt;

&lt;!DOCTYPE html&gt;
&lt;head&gt;
  &lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&gt;
  &lt;title&gt;Coders' Grave | Twitter Authentication Demo&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
Twitter bağlantısı başarıyla sağlandı.&lt;br&gt;&lt;br&gt;
Merhaba &lt;strong&gt;&lt;?php echo $content->name ?&gt;&lt;/strong&gt;
&lt;/body&gt;
&lt;/html>
</code></pre><h3>Aşama 4 &#8211; callback.php dosyamıza aşağıdakileri ekleyelim</h3><p>Yine her bir satırın üzerindeki açıklamalar aşamaları anlatmaktadır.</p><pre><code class="prettyprint">&lt;?php

session_start();

// Twitter kütüphanesinden gerekli iki dosyayı(oauth class ve config) 
// require_once ile script'e dahil ediyoruz.
require_once('Twitter/twitteroauth/twitteroauth.php');
require_once('Twitter/config.php');

// Tw uygulama izin ekranından izin ver butonuna tıklandıktan sonra 
// önceden bildirdiğimiz callback sayfasına oauth_verifier ve oauth_token 
// parametreleriyle birlikte döner. Yani callback.php?oauth_token=xxx&#038;oauth_verifier=yyy
// bu parametrelerden oauth_token anhatarının olup olmadığı ve yine bu anahtarla
// SESSION globalinizdeki oauth_token anahtarının eşit olup olmadığını
// kontrol eder. Eğer koşul sağlanmıyorsa ise login.php'ye yönlendirir.
if (isset($_GET['oauth_token']) &#038;&#038; $_SESSION['oauth_token'] !== $_GET['oauth_token']) {
  header('Location: login.php');
}

// TwitterOAuth sınıfını gerekli başlangıç değerlerini vererek connection 
// nesnesi oluşturuyoruz. Buradaki CONSUMER_KEY ve CONSUMER_SECRET sabit 
// değerlerini Twitter/config.php dosyasından ayarlıyoruz. 
// Bu değerleri dev.twitter.com adresindeki uygulamalar bölümünde ya uygulama 
// açarak ya da mevcut uygulamaların detay bilgileri arasından alabilirsiniz.
$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $_SESSION['oauth_token'], $_SESSION['oauth_token_secret']);

// sayfamıza twitter tarafından parametre geçilen oauth_verifier anahtarını
// $access_token isimli bir değişkene aktarıyoruz. Bu bizim twitter 
// tarafından şahsımıza verilen tekil bir doğrulama anahtarıdır. 
$access_token = $connection->getAccessToken($_GET['oauth_verifier']);

// Bu anahtarı SESSION globaline yazıyoruz. Sebebi ise uygulamaya bağlı olup
// olmadığımızı ve REST Api kullanımında gerekli yerlerde bu anahtarı twitter'ın
// bizden istiyor oluşudur.
$_SESSION['access_token'] = $access_token;


// Bir üst satırda artık elimizde bize ait bir SESSION oluştuğuna göre
// aşağıdakilere ihtiyacımız kalmadı ve bunları temizleyelim.
unset($_SESSION['oauth_token']);
unset($_SESSION['oauth_token_secret']);

// $connection nesnesinden HTTP RESPONSE eğer 200 dönüyorsa herşey
// yolunda demektir. Artık istediğimiz sayfaya yönlendirebiliriz.
if ($connection->http_code == 200)
  header('Location: index.php');
// Eğer yolunda değilse uygulamanın size verdiği anahtarlarda bir yanlışlık
// olabilir veya izin sonrası dönen oauth_token anahtarının tekrar kullanılmak
// istenmesinden olabilir. oauth_token anahtarı bu arada tek kullanımlıktır.
else
  header('Location: login.php');

?&gt;
</code></pre><h3>Aşama 5 &#8211; connect.php dosyamıza da aşağıdakileri ekleyelim</h3><p>Ve yine her bir satırın üzerindeki açıklamalar aşamaları anlatmaktadır.</p><pre><code class="prettyprint">&lt;?php
session_start();

// Twitter kütüphanesinden gerekli iki dosyayı(oauth class ve config) 
// require_once ile script'e dahil ediyoruz.
require_once('Twitter/twitteroauth/twitteroauth.php');
require_once('Twitter/config.php');

// Burada farkındaysanız 3. ve 4. parametreler verilmemiş.
// Çünkü henüz o parametrelere atananacak olan anahtarlara
// sahip değiliz. Onlara sahip olmak için Twitter'a login
// isteğinde bulunmamız gerek. Yine burda $connection nesnesi
// oluşturuyoruz.
$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET);

// Burada twitter'a login isteğinde bulunmamız için şart
// koşulan request token değerlerini üretiyoruz. 
// Parametrede verilen OAUTH_CALLBACK config.pgp dosyamızdan
// ayarlanmalıdır.
$request_token = $connection->getRequestToken(OAUTH_CALLBACK);

// Oluşan anahtarları tekrar kullanabilmek için oturuma yazıyoruz.
$_SESSION['oauth_token'] = $token = $request_token['oauth_token'];
$_SESSION['oauth_token_secret'] = $request_token['oauth_token_secret'];

// Eğer connection response kodu 200 ise herşey yolunda ve connect
// işlemini sağlayacak olan url'i isteyebiliriz.
if ( $connection->http_code == 200 ){
  // Giriş için link, buton veya herhangi bir şekilde twitter'a login
  // edeceğimiz bir sayfa gerekecek. Hemen alttaki getAuthorizeURL
  // metodu bizim için twitter uygulamamıza bağlantı arayüzü sunan bir
  // url üretecek ve siz bunu istediğiniz gibi kullanabileceksiniz.
  $url = $connection->getAuthorizeURL($token);
  echo '&lt;a href="' . $url . '"&gt;Twitter Connect&lt;/a&gt;';
}
else{
  echo "Uygulama ayarlarınızı kontrol edin";
}
?&gt;
</code></pre><p>Oluşturduğumuz projeyi indirmek için <a href="http://codersgrave.com/wp-content/uploads/2011/12/TwitterAuthentication.zip" title="TwitterAuth">tıklayınız</a>.</p><p>- Bu dosyaların hepsi projemde hazır, bitti<br /> - Kendime göre daha düzenli hale getirdim<br /> - Ben framework kullanıyorum ona göre düzenledim diyenlerden herhangi biriyseniz. index.php&#8217;yi browserdan tetikleyelim ve çalıştıralım bakalım neler oluyor.</p><p>Yazını başında da dediğim gibi öncelikle Twtitter hesabınıza bağlı bir uygulama olmalı. Bu bağlantıyı sadece bir uygulama üzerinden gerçekleştirebilirsiniz.</p><p>Selamlar&#8230;</p> ]]></content:encoded> <wfw:commentRss>http://codersgrave.com/1279-php-twitter-connect/feed/</wfw:commentRss> <slash:comments>13</slash:comments> </item> </channel> </rss>