lostyazilim

Facebook Login Tam Erişim Sorunu

4 Mesajlar 825 Okunma
lstbozum

viper302 viper302 WM Aracı Kullanıcı
  • Üyelik 09.08.2014
  • Yaş/Cinsiyet 37 / E
  • Meslek Siber Güvenlik Danışmanı
  • Konum İstanbul Anadolu
  • Ad Soyad K** A**
  • Mesajlar 294
  • Beğeniler 19 / 26
  • Ticaret 3, (%100)
Merhaba arkadaşlar. Facebook PHP SDK sı ile login işlemi yapıyorum. Sorunum tam erişim sağlayamıyorum. Siteden giriş yapılmak istendiğinde izin verilenler kısmına baktığımda sadece public veriler yer alıyor. Daha sonra Facebook Graph API Explorer sayfasına girip oradan User Access Token ile erişim sağlayı tekrar siteden login olmaya çalıştığımda İzin verilenler kısmına baktığımda bu sefer istediğim bütün bilgilere ulaşabiliyorum.

Anladığım kadarıyla Access Token tam erişim yapamıyorum. Acaba sorunum ne olabilir bakabilir misiniz?


session_start();
// added in v4.0.0
require_once 'autoload.php';
use Facebook\FacebookSession;
use Facebook\FacebookRedirectLoginHelper;
use Facebook\FacebookRequest;
use Facebook\FacebookResponse;
use Facebook\FacebookSDKException;
use Facebook\FacebookRequestException;
use Facebook\FacebookAuthorizationException;
use Facebook\GraphObject;
use Facebook\Entities\AccessToken;
use Facebook\HttpClients\FacebookCurlHttpClient;
use Facebook\HttpClients\FacebookHttpable;
// init app with app id and secret
FacebookSession::setDefaultApplication( 'Test','Test' );
// login helper with redirect_uri
$helper = new FacebookRedirectLoginHelper('http://www.test.com/FBLogin.php' );
try {
$session = $helper->getSessionFromRedirect();
} catch( FacebookRequestException $ex ) {
// When Facebook returns an error
} catch( Exception $ex ) {
// When validation fails or other local issues
}
// see if we have a session
if ( isset( $session ) ) {
// graph api request for user data
$request = new FacebookRequest( $session, 'GET', '/me?fields=email,first_name,last_name, gender, birthday' );
$response = $request->execute();
// get response
$graphObject = $response->getGraphObject();
$FBID = $graphObject->getProperty('id'); // To Get Facebook ID
$fbfirst_name = $graphObject->getProperty('first_name');
$fblast_name = $graphObject->getProperty('last_name');
$femail = $graphObject->getProperty('email');
$fbgender = $graphObject->getProperty('gender');
$fbbirthday = $graphObject->getProperty('birthday');

/* ---- Session Variables -----*/
$_SESSION['FBID'] = $FBID;
$_SESSION['EMAIL'] = $femail;
$_SESSION['FIRSTNAME'] = $fbfirst_name;
$_SESSION['LASTNAME'] = $fblast_name;
$_SESSION['GENDER'] = $fbgender;
$_SESSION['BIRTHDAY'] = $fbbirthday;

/* ---- header location after session ----*/
header("Location: index.php");
} else {
$loginUrl = $helper->getLoginUrl();
header("Location: ".$loginUrl);
}
?>
 

 

wmaraci
reklam

viper302 viper302 WM Aracı Kullanıcı
  • Üyelik 09.08.2014
  • Yaş/Cinsiyet 37 / E
  • Meslek Siber Güvenlik Danışmanı
  • Konum İstanbul Anadolu
  • Ad Soyad K** A**
  • Mesajlar 294
  • Beğeniler 19 / 26
  • Ticaret 3, (%100)
Acaba SDK eski olabilir mi arkadaşlar?
 

 

viper302 viper302 WM Aracı Kullanıcı
  • Üyelik 09.08.2014
  • Yaş/Cinsiyet 37 / E
  • Meslek Siber Güvenlik Danışmanı
  • Konum İstanbul Anadolu
  • Ad Soyad K** A**
  • Mesajlar 294
  • Beğeniler 19 / 26
  • Ticaret 3, (%100)
Arkadaşlar son SDK yı kullanan biri kodlarını paylaşabilir mi? sadece session alabileceğim kısmı paylaşsanız yeterli gerisini zaten düzenlerim.
 

 

greencheapnet greencheapnet GreenCheap CMS Kullanıcı
  • Üyelik 13.07.2016
  • Yaş/Cinsiyet 31 / E
  • Meslek Full-Stack Developer
  • Konum Ankara
  • Ad Soyad Y** S**
  • Mesajlar 86
  • Beğeniler 31 / 37
  • Ticaret 0, (%0)
bende buna benzer bir hata almıştım, Decimas arkadaşın verdiği yönelgeyi uygulamadım yakın zamanda uygulicam belki senin işine yarar buyrun.

Decimas adlı üyeden alıntı

Diye bir hata veriyor facebook yölendirmesinde, bu arada kodlarını yazarsan yardımcı olabilirim, sunucu tarafında sınırsız offline token alma olayı da var. Aşağıda zamanında uğraştığım bir paylaşım zımbırtısı var, örnek olsun diye bırakıyorum, araştırıp deneyip kurgulamak sana kalmış. kolay gelsin.

session_start();
require_once __DIR__ . '/Facebook/autoload.php';
$fb = new Facebook\Facebook([
'app_id' => '458866701137174545453',
'app_secret' => '30f1372f7a377234393a1e88727e7daadb097',
'default_graph_version' => 'v2.10',
]);

// Önceki Access Token dosyadan okunur
$dosya = fopen('fbuzunsürelitoken.txt', 'r');
$icerik = fread($dosya, filesize('fbuzunsürelitoken.txt'));
/*echo $icerik;*/
fclose($dosya);

if (strlen($icerik) > 0)
{
$_SESSION['facebook_access_token'] = (string) $icerik;
$fb->setDefaultAccessToken($_SESSION['facebook_access_token']);

// 'GET' 'code' değişkenine sahipse kullanıcı geldiği yere yönlendirilir
if (isset($_GET['code'])) {
header('Konum: ./');
}
// Kullanıcı bilgisi alınır
try {
$profile_request = $fb->get('/me');
$profile = $profile_request->getGraphNode()->asArray();
} catch(Facebook\Exceptions\FacebookResponseException $e) {
// Facebook graph hata verirse
echo 'Graph returned an error: ' . $e->getMessage();
session_destroy();
// ullanıcı uygulama giriş sayfasına gönerken
header("Konum: ./");
exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
// Kullanıcı doğrulama veya diğer yerel hatalar için
echo 'Facebook SDK returned an error: ' . $e->getMessage();
exit;
}

//FB post content
$message = $_GET["PostMessage"];
/*$title = 'MAJE Ağ sosyal dağıtımı';*/
$link = $_GET["ShareLink"];
/*$description = 'MAJE Ağ sosyal dağıtımı';
$picture = 'https://wallpapers.wallhaven.cc/wallpapers/full/wallhaven-118257.jpg';*/

$attachment = array(
'message' => $message,
'name' => $title,
'link' => $link,
'description' => $description,
'picture'=>$picture
);

// post on behalf of page
$pages = $fb->get('/me/accounts');
$pages = $pages->getGraphEdge()->asArray();

foreach ($pages as $key) {
if ($key['id'] == $_GET["PageID"]) {
$post = $fb->post('/' . $key['id'] . '/feed', $attachment, $key['access_token']);
$post = $post->getGraphNode()->asArray();
}
}
echo "The message may have been sent.";
}
else
{
$helper = $fb->getRedirectLoginHelper();

$permissions = ['manage_pages', 'publish_pages']; // optional
try {
if (isset($_SESSION['facebook_access_token'])) {
$accessToken = $_SESSION['facebook_access_token'];
} else {
$accessToken = $helper->getAccessToken();
}
} catch(Facebook\Exceptions\FacebookResponseException $e) {
// Facebook graph hata verirse
echo 'Graph returned an error: ' . $e->getMessage();
exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
// When validation fails or other local issues
echo 'Facebook SDK returned an error: ' . $e->getMessage();
exit;
}
if (isset($accessToken)) {
if (isset($_SESSION['facebook_access_token'])) {

// Sonraki kullanımlar için elde edilen uzun süreli token dosyaya kaydedilir
$dosya = fopen('fbuzunsürelitoken.txt', 'w');
fwrite($dosya, $_SESSION['facebook_access_token']);
fclose($dosya);

$fb->setDefaultAccessToken($_SESSION['facebook_access_token']);
} else {
// Kısa vadeli Access Token alınır
$_SESSION['facebook_access_token'] = (string) $accessToken;
// OAuth 2.0 istemcisi
$oAuth2Client = $fb->getOAuth2Client();
// Kısa vadeli Access Token uzun vadeliyle değiştirilir
$longLivedAccessToken = $oAuth2Client->getLongLivedAccessToken($_SESSION['facebook_access_token']);
$_SESSION['facebook_access_token'] = (string) $longLivedAccessToken;
// Facebook için uzun süreli Access Token tanımlanır
$fb->setDefaultAccessToken($_SESSION['facebook_access_token']);
}
// 'GET' 'code' değişkenine sahipse kullanıcı geldiği yere yönlendirilir
if (isset($_GET['code'])) {
header('Konum: ./');
}
// Kullanıcı bilgisi alınır
try {
$profile_request = $fb->get('/me');
$profile = $profile_request->getGraphNode()->asArray();
} catch(Facebook\Exceptions\FacebookResponseException $e) {
// Facebook graph hata verirse
echo 'Graph returned an error: ' . $e->getMessage();
session_destroy();
// ullanıcı uygulama giriş sayfasına gönerken
header("Konum: ./");
exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
// Kullanıcı doğrulama veya diğer yerel hatalar için
echo 'Facebook SDK returned an error: ' . $e->getMessage();
exit;
}

//FB post content
$message = $_GET["PostMessage"];
/*$title = 'MAJE Ağ sosyal dağıtımı';*/
$link = $_GET["ShareLink"];
/*$description = 'MAJE Ağ sosyal dağıtımı';
$picture = 'https://wallpapers.wallhaven.cc/wallpapers/full/wallhaven-118257.jpg';*/

$attachment = array(
'message' => $message,
'name' => $title,
'link' => $link,
'description' => $description,
'picture'=>$picture
);

// post on behalf of page
$pages = $fb->get('/me/accounts');
$pages = $pages->getGraphEdge()->asArray();

foreach ($pages as $key) {
if ($key['id'] == $_GET["PageID"]) {
$post = $fb->post('/' . $key['id'] . '/feed', $attachment, $key['access_token']);
$post = $post->getGraphNode()->asArray();
}
}
echo "The message may have been sent.";


// Now you can redirect to another page and use the access token from $_SESSION['facebook_access_token']
} else {
// Eğer bütün işlemler tek bir sayfada yönetiliyorsa sesion alındıktan sonra geri dönülecek adres burasıdır, böyleliklesesion başladığında boşta beklemek yerine o session kullanılarak gerekli işlemler yaptırılabilir
$GeriDönüşAdresi = $helper->getLoginUrl('http://maje.eyuperdogan.com.tr/autopostem/facebook.php', $permissions);
echo 'Giriş Yap';
}
}
 

 

wmaraci
wmaraci
wmaraci
Konuyu toplam 1 kişi okuyor. (0 kullanıcı ve 1 misafir)
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al