2
因此,我使用Facebook註冊插件以及Javascript SDK(使用xfbml顯示)。註冊工作正常,我的代碼處理它看起來像這樣:使用Facebook註冊插件後無法獲取用戶
# 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帳戶時,我的網站顯示在我使用的應用程序下(隱私設置中)。
儘管如此,當我嘗試在主頁上使用PHP SDK時,用戶仍未出現身份驗證。以下代碼將$ user_id和「無效」作爲$無效打印出「0」。以下代碼適用於主頁:
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";
}
我在做什麼錯?
謝謝!