[英]Facebook PHP SDK 4.0 Login
我试图让Facebook登录他们的新PHP SDK 4.0为我的网站工作。 我几乎逐字逐句地遵循他们的要点,仍然无法获得测试页面。 当我尝试登录时,我被重定向到表单的URL:
https://www.facebook.com/v2.0/dialog/oauth?client_id={some number}&redirect_uri{localhost%2F%7E{MyName}%2F{my site}}&state=08d94ec4670256aa2b2c586781590766&sdk=php-sdk-4.0.0&scope=
我已经在我的Facebook开发者页面上填写了相同的URL,这是我试图测试的代码:
<?php
require_once( 'Facebook/FacebookSession.php' );
require_once( 'Facebook/FacebookRedirectLoginHelper.php' );
require_once( 'Facebook/FacebookRequest.php' );
require_once( 'Facebook/FacebookResponse.php' );
require_once( 'Facebook/FacebookSDKException.php' );
require_once( 'Facebook/FacebookRequestException.php' );
require_once( 'Facebook/FacebookAuthorizationException.php' );
require_once( 'Facebook/GraphObject.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;
// start session
session_start();
// init app with app id and secret
FacebookSession::setDefaultApplication( '{My app ID}','{My app secret}' );
// login helper with redirect_uri
$helper = new FacebookRedirectLoginHelper('localhost/~{My Name}/{My Project}' );
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' );
$response = $request->execute();
// get response
$graphObject = $response->getGraphObject();
// print data
echo '<pre>' . print_r( $graphObject, 1 ) . '</pre>';
} else {
// show login url
echo '<a href="' . $helper->getLoginUrl() . '">Login</a>';
}
不幸的是,我从未被重定向,甚至加载登录页面。 我在这里做错了什么?
我有同样的问题。 您需要先在Facebook App设置中设置域URL和站点URL。 转到此页面可更改您的设置: https : //developers.facebook.com/apps 。
我在这里一步一步地分享: http : //bit.ly/1iNNsBy
您不必包含php文件。 Facebook希望您使用作曲家来管理所需的内容。
但是....他们给你一个解决方法:包括autoload.php
并保留他们为你提供的文件结构,以便最简单的实现。 为了方便起见,将SDK中的所有文件放入一个名为facebook
的文件夹中,因此您在其中有一个名为src
的子文件夹,另一个名为Facebook
然后SDK会创建一个链接,供用户点击该链接以授权访问您的应用。
如果您正在测试,则需要不断删除Facebook个人资料中的应用以获取每次注册窗口( Settings
右上角下拉菜单,然后是2014年8月左侧的Apps
),否则它将直接跳转到指定的重定向页面并且似乎没有任何效果。
// if you include this file you don't need to use composer
require_once('facebook/autoload.php');
// use these
use Facebook\FacebookSession;
use Facebook\FacebookRedirectLoginHelper;
// initiate the session
FacebookSession::setDefaultApplication('[YOUR ID]', '[YOUR SECRET]');
// use the helper
$helper = new FacebookRedirectLoginHelper('[YOUR REDIRECT URL]');
// get a loginurl
$loginUrl = $helper->getLoginUrl();
echo "<a href='".$loginUrl."'>Link here</a>";
检查说明:
脚本不完整。 如果未设置会话,则必须编写else部分。 请求许可在这里发挥作用。
else {
$helper = new FacebookRedirectLoginHelper('https://apps.facebook.com/yourappname/');
$permissions = array(
scope =>'publish_actions',
'email',
'user_location',
'user_birthday'
);
// Get login URL
$auth_url = $helper->getLoginUrl($permissions);
//$auth_url = $helper->getLoginUrl(array('email'));
echo "<script>window.top.location.href='".$auth_url."'</script>";
如Facebook Developer文档中所述 ,您需要PHP 5.4+。
这是你正在使用的代码吗?
$helper = new FacebookRedirectLoginHelper('localhost/~{My Name}/{My Project}' );
您将从Facebook重定向,因此此处的参数必须是可从Internet访问的URL。
我在尝试执行时遇到了问题
$loginUrl = $helper->getLoginUrl();
解决方案是致电:
session_start();
之前
$helper = new FacebookRedirectLoginHelper($redirect_url);
在@ DigitalVisual上面的答案。
$helper = new FacebookRedirectLoginHelper('localhost/~{My Name}/{My Project}');
使用如下:
$helper = new FacebookRedirectLoginHelper('http://example.com/help.php');
必须使用完整的URL。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.