Php Can';t使用Facebook注册插件后获取用户
因此,我使用Facebook注册插件和Javascript SDK(使用xfbml显示它)。注册工作正常,我处理注册的代码如下所示:Php Can';t使用Facebook注册插件后获取用户,php,sdk,facebook,Php,Sdk,Facebook,因此,我使用Facebook注册插件和Javascript SDK(使用xfbml显示它)。注册工作正常,我处理注册的代码如下所示: # Check if the form has been submitted. if(array_key_exists('signed_request', $_REQUEST)) { define('FACEBOOK_APP_ID', 'REMOVED'); define('FACEBOOK_SECRET', 'REMOVED'); fu
# Check if the form has been submitted.
if(array_key_exists('signed_request', $_REQUEST))
{
define('FACEBOOK_APP_ID', 'REMOVED');
define('FACEBOOK_SECRET', 'REMOVED');
function parse_signed_request($signed_request, $secret) {
list($encoded_sig, $payload) = explode('.', $signed_request, 2);
// decode the data
$sig = base64_url_decode($encoded_sig);
$data = json_decode(base64_url_decode($payload), true);
if (strtoupper($data['algorithm']) !== 'HMAC-SHA256') {
error_log('Unknown algorithm. Expected HMAC-SHA256');
return null;
}
$expected_sig = hash_hmac('sha256', $payload, $secret, $raw = true);
if ($sig !== $expected_sig) {
error_log('Bad Signed JSON signature!');
return null;
}
return $data;
}
function base64_url_decode($input) {
return base64_decode(strtr($input, '-_', '+/'));
}
if ($_REQUEST) {
# Load the Users model.
$this->load->model('Users');
# Save the data from the form.
$response = parse_signed_request($_REQUEST['signed_request'], FACEBOOK_SECRET);
# Save the user's email.
$user['email'] = $response['registration']['email'];
# Boolean that stores if the user registered through FB.
$facebook;
// the rest is irrelevant
因此,一旦用户注册,我将其重定向回主页。当我登录我的Facebook帐户时,我的网站会显示在我使用过的应用程序下(在隐私设置中)
尽管如此,当我尝试在主页上使用PHPSDK时,用户似乎没有经过身份验证。下面的代码将“0”打印为$user\u id,“not valid”打印为$isvalid。以下代码用于主页:
require 'application/sdk/facebook.php';
$facebook = new Facebook(array(
'appId' => 'REMOVED',
'secret' => 'REMOVED',
));
// Get User ID
$user = $facebook->getUser();
echo $user;
$isvalid;
try {
$facebook->api('/me');
$isvalid = true;
} catch (FacebookApiException $e) {
$isvalid = false;
echo "not valid";
}
我做错了什么
谢谢 在过去的八个小时里,我把头发拔了出来,在一块石头的底部发现了这块宝石: 如果您只使用PHPSDK进行 身份验证,请立即升级。如果 您使用的是JavaScript SDK 与PHP SDK一起登录, 您将要等待 JavaScript-SDK升级(第4版) 周)。PHP SDK的3.0.0版 不会配合当前的 cookie导致的JavaScript SDK 格式更改 是时候使用旧的SDK了