2011-10-10 66 views
1

我在Facebook頁面選項卡中授權用戶存在問題。基本上,我已經在PHP和Javascript中嘗試了很多不同的方法。如何在Facebook頁面標籤中授權用戶?

如果有人能爲我解釋這一點,並顯示一些代碼,它將是偉大的!我正在考慮在PHP中進行授權,然後繼續獲取一些用戶數據寬度的Javascript。 我還需要能夠讓用戶同意這些保證。所以彈出授權和權限是我需要幫助的。

您認爲如何?有沒有更好的辦法? 幫助一些代碼,因爲我說的太棒了!

回答

5

爲了知道用戶是否已經驗證您的應用程序或沒有,解碼signed_request並檢查組oauth_token傳遞:

<?php  
$secret='APP_SECRET'; 
$signed_request=($_REQUEST['signed_request']); 
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;} 

// check signature 
$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, '-_', '+/')); 
} 

$information=parse_signed_request($signed_request, $secret); 
$oauth_token=$information["oauth_token"]; 
?> 

然後,使用這個腳本來獲取用戶的身份驗證,如果$組oauth_token爲空:

<?php 
    $app_id = "APP_ID"; 
    $canvas_page = "YOUR_TAB_URL"; 
    $auth_url = "http://www.facebook.com/dialog/oauth?client_id=" 
      . $app_id . "&redirect_uri=" . urlencode($canvas_page) . "&scope=ENTER WANTED PERMISSIONS HERE"; 

    $signed_request = $_REQUEST["signed_request"]; 

    list($encoded_sig, $payload) = explode('.', $signed_request, 2); 

    $data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true); 

    if (empty($oauth_token)) {echo("<script> top.location.href='" . $auth_url . "'</script>");} 
    ?> 

在這些腳本中填入APP_SECRET,APP_ID,YOUR_TAB_URL和WANTED PERMISSIONS,歡呼聲。

+0

謝謝,謝謝,謝謝,謝謝,謝謝,謝謝,謝謝,謝謝,...! :) – Stiropor