Я просто пытаюсь обновить до PHP SDK 4.0. Я не могу найти свою ошибку и надеюсь, что вы можете мне помочь. Я скопировал все файлы в папку «./facebook4» и внедрил следующий код:
// Skip these two lines if you're using Composer
define('FACEBOOK_SDK_V4_SRC_DIR', '/./facebook4/src/Facebook/');
// if you include this file you don't need to use composer
require __DIR__ . '/./facebook4/autoload.php';
// include required files form Facebook SDK
require_once( './facebook4/HttpClients/FacebookHttpable.php' );
require_once( './facebook4/HttpClients/FacebookCurl.php' );
require_once( './facebook4/HttpClients/FacebookCurlHttpClient.php' );
require_once( './facebook4/Entities/AccessToken.php' );
require_once( './facebook4/Entities/SignedRequest.php' );
require_once( './facebook4/FacebookSession.php' );
require_once( './facebook4/FacebookRedirectLoginHelper.php' );
require_once( './facebook4/FacebookRequest.php' );
require_once( './facebook4/FacebookResponse.php' );
require_once( './facebook4/FacebookSDKException.php' );
require_once( './facebook4/FacebookRequestException.php' );
require_once( './facebook4/FacebookOtherException.php' );
require_once( './facebook4/FacebookAuthorizationException.php' );
require_once( './facebook4/GraphObject.php' );
require_once( './facebook4/GraphSessionInfo.php' );
use Facebook\HttpClients\FacebookHttpable;
use Facebook\HttpClients\FacebookCurl;
use Facebook\HttpClients\FacebookCurlHttpClient;
use Facebook\Entities\AccessToken;
use Facebook\Entities\SignedRequest;
use Facebook\FacebookSession;
use Facebook\FacebookRedirectLoginHelper;
use Facebook\FacebookRequest;
use Facebook\FacebookResponse;
use Facebook\FacebookSDKException;
use Facebook\FacebookRequestException;
use Facebook\FacebookOtherException;
use Facebook\FacebookAuthorizationException;
use Facebook\GraphObject;
use Facebook\GraphSessionInfo;
FacebookSession::setDefaultApplication('AppID','secretAppID');
$redirect_url = "http://www.mypage.de/Logged.php";
// use the helper
$facebook = new FacebookRedirectLoginHelper($redirect_url);
// get a loginurl$permissions = array(
'email',
'read_stream',
'user_actions:criminalcase'
);
echo "Test1";
$loginUrl = $facebook->getLoginUrl($permissions);
echo "Test2";
echo "<a href='".$loginUrl."'>Link here</a>";
Test1 отображается, когда я вызываю страницу, но Test2 и «Ссылка здесь» не отображаются. Так что я думаю, что должна быть проблема с getLoginUrl, но я понятия не имею, что это такое
https://developers.facebook.com/docs/reference/php/facebook-getLoginUrl/
Присмотритесь к массиву:
$params = array(
'scope' => 'read_stream, friends_likes',
'redirect_uri' => 'https://www.myapp.com/post_login_page'
);
Так что в вашем случае это должно быть так:
$permissions = array(
'scope' => 'email, read_stream, user_actions:criminalcase'
);
Не уверен, что вы хотите достичь с «user_actions: Criminalcase», нет такого разрешения. Кроме того, вам не нужны все эти операторы require при использовании автозагрузчика.
Важно: вы скорее всего не получите read_stream
одобрено, поэтому оно будет работать только для пользователей, имеющих роль в вашем приложении (Admin / Developer / Tester):
Это разрешение предоставляется приложениям, создающим клиент под Facebook, на платформах, где Facebook еще не доступен. Например, приложения Android и iOS не будут одобрены для этого разрешения. Кроме того, веб-приложения, приложения для настольных ПК и ТВ не получат это разрешение.
Источник: https://developers.facebook.com/docs/facebook-login/permissions/v2.2#reference-read_stream
В вашем синтаксисе все еще есть проблема.
попробуй это
$permissions = array('email', 'read_stream', 'user_actions:criminalcase');
Я не уверен в вашем разрешении «user_actions: уголовное дело».
Но я исправил здесь синтаксис.