Sitemize Facebook ile giriş yapmakta sorun yaşıyorum.Facebook ile bağlanın Facebook ile bağlan SDK için PHP
Geliştiriciyi, developers.facebook.com adresindeki eğiticiyi izleyerek Facebook SDK kullanarak giriş yaptım, ancak benim için çalışmıyor.
Neyin yanlış gittiğini bulmak için basit bir test sayfası yazdım. Bu sayfanın ilk ziyaretinden sonra
<!DOCTYPE html>
<html>
<head></head>
<body>
<pre>
<?php
$app_id = '446458238729594';
$app_secret = '********';
$redirect_uri = 'http://mysite.localhost/';
try {
echo('Including "facebook.php"...');
require './src/facebook.php';
echo("done.\n\n");
echo('Starting session...');
$result = session_start();
if($result) {
echo("done.\n\n");
echo("\n=====>>>>> Session array:\n" . var_export($_SESSION, true)
. "\n\n");
} else {
echo("fail.\n\n");
echo("\n=====>>>>> Session array:\n" . var_export($_SESSION, true)
. "\n\n");
}
echo("Trying to get counter from the session...\n");
if(isset($_SESSION['counter'])) {
echo('Value: ' . $_SESSION['counter'] . "\n");
echo("Increasing to one...\n");
$_SESSION['counter']++;
echo("done.\n");
echo('Value: ' . $_SESSION['counter'] . "\n\n");
} else {
echo("fail.\n");
echo("Trying to add a counter and set it's value to 0...\n");
$_SESSION['counter'] = 0;
echo('Value: ' . $_SESSION['counter'] . "\n");
echo("done.\n\n");
}
echo('Creating an instance of Facebook class...');
$facebook = new Facebook(
array(
'appId' => $app_id,
'secret' => $app_secret,
)
);
echo("done.\n\n");
echo("The instance of Facebook class:\n" . str_replace($app_secret,
'>>>APP_SECRET<<<', var_export($facebook, true)) . "\n\n");
echo("\n=====>>>>> Session array:\n" . var_export($_SESSION, true)
. "\n\n");
echo('Trying to get user ID...');
$user_id = $facebook->getUser();
echo("done.\n\n");
echo("User ID:\n" . var_export($user_id, true) . "\n\n");
echo("\n=====>>>>> Session array:\n" . var_export($_SESSION, true)
. "\n\n");
echo('Trying to get user profile info...');
try {
$user_profile = $facebook->api('/me');
echo("done.\n\n");
echo("User profile info:\n" . var_export($user_profile, true)
. "\n\n");
} catch(Exception $exception) {
echo("fail. Probably user is not logged in.\n\n");
echo("Exception:\n--------\n" . str_replace($app_secret,
'>>>APP_SECRET<<<', var_export($exception, true))
. "\n--------\n\n");
$user_id = null;
echo("User ID is now NULL.\n\n");
}
echo("\n=====>>>>> Session array:\n" . var_export($_SESSION, true)
. "\n\n");
if($user) {
echo('Seems like user is logged in. Getting logout url...');
$url = $facebook->getLogoutUrl();
echo("done.\n\n");
} else {
echo('Seems like user is NOT logged in. Getting login url...');
$url = $facebook->getLoginUrl(
array(
'scope' => 'read_stream, publish_stream, user_birthday,'
. ' user_location, user_work_history, user_hometown,'
. ' user_photos',
'redirect_uri' => $redirect_uri,
)
);
echo("done.\n\n");
}
echo('URL:<br></pre><a href=' . $url .">Login/Logout</a><pre>\n\n");
echo("\n=====>>>>> Session array:\n"
. var_export($_SESSION, true) . "\n\n");
if($user) {
echo('Seems like user is still logged in. Trying to get some profile'
. ' info...');
echo("\nCreating request...\n");
$queries = array(
array(
'method' => 'GET',
'relative_url' => '/' . $user,
),
array(
'method' => 'GET',
'relative_url' => '/' . $user . '/home?limit=50',
),
array(
'method' => 'GET',
'relative_url' => '/' . $user . '/friends',
),
array(
'method' => 'GET',
'relative_url' => '/' . $user . '/photos?limit=6',
),
);
echo("Request:\n\n" . var_export($queries, true) . "\n\n");
echo("\nEncoding request using JSON format...\n");
$queries_encoded = json_encode($queries);
echo("Encoded request:\n\n" . var_export($queries_encoded, true)
. "\n\n");
try {
echo("\nTrying to get response...\n");
$response = $facebook->api('?batch=' . $queries_encoded, 'POST');
echo("Response:\n\n" . var_export($response, true) . "\n\n");
echo("\nTrying to decode response...\n");
echo("\n" . json_decode($response[0]['body'], true) . "\n");
echo("\n" . json_decode($response[1]['body'], true) . "\n");
echo("\n" . json_decode($response[2]['body'], true) . "\n");
echo("\n" . json_decode($response[3]['body'], true) . "\n");
echo("\n\ndone.\n\n");
} catch(Exception $exception) {
echo("fail.\n\n");
echo("Exception:\n--------\n\n" . str_replace($app_secret,
'>>>APP_SECRET<<<', var_export($exception, true))
. "\n--------\n\n");
}
} else {
echo('Seems like user is still NOT logged in. At now we can\'t do'
. ' anything. Try to login using the URL above.');
}
echo("\n\n========\n\nSession array:\n" . var_export($_SESSION, true)
. "\n\n");
} catch(Exception $exception) {
echo("\n\n\nAn exception have been trown:\n--------\n\n" . str_replace(
$app_secret, '>>>APP_SECRET<<<', var_export($exception, true))
. "\n--------\n\n");
echo("\n\n========\n\nSession array:\n" . var_export($_SESSION, true)
. "\n\n");
}
?>
</pre>
</body>
</html>
(I Facebook ile oturum değilim), bu çıktıyı almak: Sonra
Including "facebook.php"...done.
Starting session...done.
=====>>>>> Session array:
array (
)
Trying to get counter from the session...
fail.
Trying to add a counter and set it's value to 0...
Value: 0
done.
Creating an instance of Facebook class...done.
The instance of Facebook class:
Facebook::__set_state(array(
'sharedSessionID' => NULL,
'appId' => '446458238729594',
'appSecret' => '>>>APP_SECRET<<<',
'user' => NULL,
'signedRequest' => NULL,
'state' => NULL,
'accessToken' => NULL,
'fileUploadSupport' => false,
'trustForwarded' => false,
))
=====>>>>> Session array:
array (
'counter' => 0,
)
Trying to get user ID...done.
User ID:
0
=====>>>>> Session array:
array (
'counter' => 0,
)
Trying to get user profile info...fail. Probably user is not logged in.
Exception:
--------
FacebookApiException::__set_state(array(
'result' =>
array (
'error_code' => 7,
'error' =>
array (
'message' => 'Failed to connect to 2a03:2880:2050:1f01:face:b00c:0:2: Network is unreachable',
'type' => 'CurlException',
),
),
'message' => 'Failed to connect to 2a03:2880:2050:1f01:face:b00c:0:2: Network is unreachable',
'string' => '',
'code' => 7,
'file' => '/srv/www/htdocs/mysite/web/src/base_facebook.php',
'line' => 967,
'trace' =>
array (
0 =>
array (
'file' => '/srv/www/htdocs/mysite/web/src/base_facebook.php',
'line' => 899,
'function' => 'makeRequest',
'class' => 'BaseFacebook',
'type' => '->',
'args' =>
array (
0 => 'https://graph.facebook.com/me',
1 =>
array (
'method' => 'GET',
'access_token' => '446458238729594|>>>APP_SECRET<<<',
),
),
),
1 =>
array (
'file' => '/srv/www/htdocs/mysite/web/src/base_facebook.php',
'line' => 866,
'function' => '_oauthRequest',
'class' => 'BaseFacebook',
'type' => '->',
'args' =>
array (
0 => 'https://graph.facebook.com/me',
1 =>
array (
'method' => 'GET',
),
),
),
2 =>
array (
'function' => '_graph',
'class' => 'BaseFacebook',
'type' => '->',
'args' =>
array (
0 => '/me',
),
),
3 =>
array (
'file' => '/srv/www/htdocs/mysite/web/src/base_facebook.php',
'line' => 644,
'function' => 'call_user_func_array',
'args' =>
array (
0 =>
array (
0 =>
Facebook::__set_state(array(
'sharedSessionID' => NULL,
'appId' => '446458238729594',
'appSecret' => '>>>APP_SECRET<<<',
'user' => 0,
'signedRequest' => NULL,
'state' => NULL,
'accessToken' => '446458238729594|>>>APP_SECRET<<<',
'fileUploadSupport' => false,
'trustForwarded' => false,
)),
1 => '_graph',
),
1 =>
array (
0 => '/me',
),
),
),
4 =>
array (
'file' => '/srv/www/htdocs/mysite/web/index.php',
'line' => 69,
'function' => 'api',
'class' => 'BaseFacebook',
'type' => '->',
'args' =>
array (
0 => '/me',
),
),
),
'previous' => NULL,
))
--------
User ID is now NULL.
=====>>>>> Session array:
array (
'counter' => 0,
)
Seems like user is NOT logged in. Getting login url...done.
URL:
Login/Logout
=====>>>>> Session array:
array (
'counter' => 0,
'fb_446458238729594_state' => '84260edcd60940884d261812496a488c',
)
Seems like user is still NOT logged in. At now we can't do anything. Try to login using the URL above.
========
Session array:
array (
'counter' => 0,
'fb_446458238729594_state' => '84260edcd60940884d261812496a488c',
)
Bana verilen URL'yi kullanarak giriş deneyin Bu koddur . Bu benim Facebook uygulama yetkilendirme sayfasına yönlendiriyor. Ben oturum am bekliyoruz Bundan sonra
http://mysite.localhost/?state=84260edcd60940884d261812496a488c&code=AQDkHPlXXweEiTjXg-sUXwwQAy0_xRYc89Opfz6AF9dlGOomCSG7fjf0440ctHuADKMEG4P7CheeNx9PnwUta-jkfpm03MjDCKyieOZpIPG-evlKYm64mRxD2Q5f_-HJROIC9I_-lHswr5RT3huSQySA55pD28b07Ouv87NqihZ1brGfU-_0LyhcdldtNikb-2xn6NRpa17xEmU37pBqDV1r#_=_
ve sayfam alır ve bana Facebook profilinden biraz bilgi gösterir ama öyle değil: istenen izinleri onayladıktan sonra, bu URL'ye beni yönlendirir.
Including "facebook.php"...done.
Starting session...done.
=====>>>>> Session array:
array (
'counter' => 0,
'fb_446458238729594_state' => '84260edcd60940884d261812496a488c',
)
Trying to get counter from the session...
Value: 0
Increasing to one...
done.
Value: 1
Creating an instance of Facebook class...done.
The instance of Facebook class:
Facebook::__set_state(array(
'sharedSessionID' => NULL,
'appId' => '446458238729594',
'appSecret' => '>>>APP_SECRET<<<',
'user' => NULL,
'signedRequest' => NULL,
'state' => '84260edcd60940884d261812496a488c',
'accessToken' => NULL,
'fileUploadSupport' => false,
'trustForwarded' => false,
))
=====>>>>> Session array:
array (
'counter' => 1,
'fb_446458238729594_state' => '84260edcd60940884d261812496a488c',
)
Trying to get user ID...done.
User ID:
0
=====>>>>> Session array:
array (
'counter' => 1,
)
Trying to get user profile info...fail. Probably user is not logged in.
Exception:
--------
FacebookApiException::__set_state(array(
'result' =>
array (
'error_code' => 7,
'error' =>
array (
'message' => 'Failed to connect to 2a03:2880:2050:1f01:face:b00c:0:2: Network is unreachable',
'type' => 'CurlException',
),
),
'message' => 'Failed to connect to 2a03:2880:2050:1f01:face:b00c:0:2: Network is unreachable',
'string' => '',
'code' => 7,
'file' => '/srv/www/htdocs/mysite/web/src/base_facebook.php',
'line' => 967,
'trace' =>
array (
0 =>
array (
'file' => '/srv/www/htdocs/mysite/web/src/base_facebook.php',
'line' => 899,
'function' => 'makeRequest',
'class' => 'BaseFacebook',
'type' => '->',
'args' =>
array (
0 => 'https://graph.facebook.com/me',
1 =>
array (
'method' => 'GET',
'access_token' => '446458238729594|>>>APP_SECRET<<<',
),
),
),
1 =>
array (
'file' => '/srv/www/htdocs/mysite/web/src/base_facebook.php',
'line' => 866,
'function' => '_oauthRequest',
'class' => 'BaseFacebook',
'type' => '->',
'args' =>
array (
0 => 'https://graph.facebook.com/me',
1 =>
array (
'method' => 'GET',
),
),
),
2 =>
array (
'function' => '_graph',
'class' => 'BaseFacebook',
'type' => '->',
'args' =>
array (
0 => '/me',
),
),
3 =>
array (
'file' => '/srv/www/htdocs/mysite/web/src/base_facebook.php',
'line' => 644,
'function' => 'call_user_func_array',
'args' =>
array (
0 =>
array (
0 =>
Facebook::__set_state(array(
'sharedSessionID' => NULL,
'appId' => '446458238729594',
'appSecret' => '>>>APP_SECRET<<<',
'user' => 0,
'signedRequest' => NULL,
'state' => NULL,
'accessToken' => '446458238729594|>>>APP_SECRET<<<',
'fileUploadSupport' => false,
'trustForwarded' => false,
)),
1 => '_graph',
),
1 =>
array (
0 => '/me',
),
),
),
4 =>
array (
'file' => '/srv/www/htdocs/mysite/web/index.php',
'line' => 69,
'function' => 'api',
'class' => 'BaseFacebook',
'type' => '->',
'args' =>
array (
0 => '/me',
),
),
),
'previous' => NULL,
))
--------
User ID is now NULL.
=====>>>>> Session array:
array (
'counter' => 1,
)
Seems like user is NOT logged in. Getting login url...done.
URL:
Login/Logout
=====>>>>> Session array:
array (
'counter' => 1,
'fb_446458238729594_state' => '6ae5ea9e5f7199fb6d19793905dcdd65',
)
Seems like user is still NOT logged in. At now we can't do anything. Try to login using the URL above.
========
Session array:
array (
'counter' => 1,
'fb_446458238729594_state' => '6ae5ea9e5f7199fb6d19793905dcdd65',
)
Lütfen giriş çalışmıyor neden beni anlamaya yardımcı olur: Bu çıktıyı almak? Neden Facebook sınıfının örneği erişim belirtecini almıyor? Ve neden Facebook :: getUser() yöntemi her zaman 0 döndürüyor? Bunu nasıl düzeltebilirim?
Olası neden 1: yani sabır lütfen - burada bıçak almak gidiş
PHP SDK üzerinde ölecektir başlatma zaten. Bana göre sunucusunda genel bir IPv6 bağlantı sorunu gibi görünüyor; veya bir güvenlik duvarı veya FB’nin sunucularına bağlanmaya izin vermeyen bir şey. – CBroe
Teşekkürler. Sorun güvenlik duvarındaydı - yerel ağımdan harici IPv6 bağlantılarını engelledi. – user1764823
harika @CBroe - güzel yakalama. – Fraccus