2014-12-19 34 views
1

我只是尝试更新到PHP SDK 4.0。我找不到我的错误,希望你能帮助我。我复制所有文件到文件夹” ./facebook4" 并实现下面的代码:Facebook getloginurl额外权限

// 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一个问题,但我不知道它是什么

+1

查看错误日志 – WizKid

回答

0

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”实现什么,没有这样的权限。另外,使用自动加载器时,您不需要所有这些需要语句。

重要:您将最有可能得不到read_stream批准,因此将只为用户的工作与你的应用程序(管理/开发/测试仪)作用:

此权限被授予应用建设Facebook尚未推出的平台上的Facebook品牌客户。例如,Android和iOS应用不会被批准获得此权限。此外,Web,桌面和电视应用程序将不会被授予此权限。

来源:https://developers.facebook.com/docs/facebook-login/permissions/v2.2#reference-read_stream

+0

谢谢你的回答。我需要read_strea和user_actions:criminalcase来阅读用户墙上的facebook游戏所发布的帖子。使用旧的SDK,获取这些权限并阅读帖子是没有问题的。如果他们现在改变了这一点,那么能够阅读像刑事案件或farmville这样的游戏发布的正确范围是什么? – Grit

+0

我在那个页面上看起来略有下降,并且我发现了另外两个可以用来代替read_stream的范围,如果我理解正确的话:user_games_activity和user_actions:{app_namespace}。任何人都可以告诉我区别吗? – Grit

+0

顺便说一句我改变了源代码: $ permissions = array( 'scope'=>'email,read_stream,user_actions:criminalcase' );但结果仍然相同,Test2不显示 – Grit

0

还有你的语法问题。

试试这个

$permissions = array('email', 'read_stream', 'user_actions:criminalcase'); 

我不知道你的 “user_actions:criminalcase” 权限。

但我在这里更正了语法。