我使用laravel框架刚刚安装facebook php sdk "facebook/php-sdk-v4": "~5.0@dev"通过composer。现在最初当我试图找到用户是否登录或不,没有得到userid,即使我已经登录了。
在我搜索的例子中,他们使用$user_id = $fb->getUser();获得userID,但我不能使用该方法(得到这个错误:调用未定义的方法Facebook'Facebook::getUser())),所以我使用$user_id = $fb->getClient();
我在我的本地主机上尝试这个,所以在facebook上创建了一个应用程序,并在应用程序域中提到'localhost'。也给了网站url作为我的localhost url。
我的代码是,
session_start();
require_once( 'vendor/autoload.php' );
$fb = new Facebook'Facebook([
'app_id' => '---',
'app_secret' => '****',
'default_graph_version' => 'v2.3',
'cookie' => 'true'
]);
$helper = $fb->getRedirectLoginHelper();
$user_id = $fb->getClient();
if($user_id){
try {
$accessToken = $helper->getAccessToken();
} catch( Facebook'Exceptions'FacebookSDKException $e ) {
echo $e->getMessage();
exit;
}
}
else{
$permissions = ['email', 'publish_actions', 'user_posts']; // optional
$callback = 'http://localhost:8000/add-customer/Renters';
$loginUrl = $helper->getLoginUrl($callback, $permissions);
echo '<a href="' . $loginUrl . '">Log in with Facebook!</a>';
}
我也不能使用方法像getUser(),api('/me'),getSessionFromRedirect()..
当我尝试只从应用程序帐户(我已经创建了应用程序)在facebook上提供帖子时,我可以发布,如果我从其他帐户登录并运行代码以在墙上提供帖子,那么它会抛出一个错误,如"图形返回一个错误:(#200)用户尚未授权应用程序执行此操作"。
我想要的是确定从任何帐户用户登录或不获得访问令牌,如果登录并能够张贴在用户墙上。
如果你想让应用的管理员/测试员/开发者以外的其他用户使用扩展权限,你的应用必须经过facebook的审核。这些都在文档中:
- https://developers.facebook.com/docs/facebook-login/review/what-is-login-review
- https://developers.facebook.com/docs/facebook-login/permissions/v2.4参考