Facebook PHP SDK 4.0登录
我正在尝试使用他们新的PHPSDK4.0登录Facebook,该软件适用于我的网站。我几乎一字不差地遵循了他们的要点,但仍然无法让测试页面正常工作。当我尝试登录时,我会被重定向到以下表单的url:Facebook PHP SDK 4.0登录,php,facebook,facebook-graph-api,Php,Facebook,Facebook Graph Api,我正在尝试使用他们新的PHPSDK4.0登录Facebook,该软件适用于我的网站。我几乎一字不差地遵循了他们的要点,但仍然无法让测试页面正常工作。当我尝试登录时,我会被重定向到以下表单的url: https://www.facebook.com/v2.0/dialog/oauth?client_id={some number}&redirect_uri{localhost%2F%7E{MyName}%2F{my site}}&state=08d94ec4670256aa2b2c
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应用程序设置中设置域URL和站点URL。转到此页面以更改您的设置:
我在这里一步一步地分享:如中所述,您需要PHP5.4+。这是您正在使用的代码吗
// 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>";
您将从Facebook重定向,因此这里的参数需要是一个可从Internet访问的URL。您不必包含php文件。Facebook希望您使用composer来管理所需内容
然而。。。。它们为您提供了一种解决方法:包括autoload.php
,并保留它们为您提供的文件结构,以便于实现。为方便起见,将SDK中的所有文件放入名为facebook
的文件夹中,这样您就有一个子文件夹名为src
,其中还有一个子文件夹名为facebook
然后SDK创建一个链接,您的用户可以单击该链接来授权访问您的应用程序
如果您正在测试,您需要不断从您的facebook个人资料中删除该应用程序,以便每次获得注册窗口(设置
右上角下拉列表,然后从2014年8月起在左侧显示应用程序
),否则它将直接跳转到您指定的重定向页面,并显示为没有任何效果
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>";
//如果包含此文件,则不需要使用composer
只需_一次('facebook/autoload.php');
//使用这些
使用Facebook\FacebookSession;
使用Facebook\FacebookRedirectLoginHelper;
//启动会话
FacebookSession::setDefaultApplication(“[YOUR ID]”、“[YOUR SECRET]”);
//使用助手
$helper=newfacebookRedirectLoginHelper(“[您的重定向URL]”);
//找一个后勤人员
$loginUrl=$helper->getLoginUrl();
回声“;
检查注意事项:
检查您是否已在facebook上设置了测试应用程序
检查域是否与您正在使用的域匹配
检查将用于处理响应的重定向页面的完整url李>
脚本不完整。如果未设置会话,则必须在其中写入else部分。权限请求在此处进入角色
$loginUrl = $helper->getLoginUrl();
else{
$helper=新的FacebookRedirectLoginHelper('https://apps.facebook.com/yourappname/');
$permissions=array(
范围=>'publish_actions',
“电子邮件”,
“用户位置”,
“用户生日”
);
//获取登录URL
$auth_url=$helper->getLoginUrl($permissions);
//$auth_url=$helper->getLoginUrl(数组('email');
echo“window.top.location.href=”$auth_url。“”;
我在尝试执行时遇到问题
session_start();
解决办法是:
$helper = new FacebookRedirectLoginHelper($redirect_url);
在
$helper = new FacebookRedirectLoginHelper('localhost/~{My Name}/{My Project}');
在上面@DigitalVisual的回答中
$helper = new FacebookRedirectLoginHelper('http://example.com/help.php');
使用类似于:
必须使用完整的URL
$helper = new FacebookRedirectLoginHelper('http://example.com/help.php');