2011-02-01 1 views
7

のFacebookユーザーがアプリに認証解除し、ユーザーが、私は、データベース内のユーザーの詳細とFacebookの詳細(アクセストークン)を格納しています私のウェブサイトからFacebookアプリケーションを受け入れ

彼は私がデータベースから詳細を削除したいのFacebookから自分のアプリケーションを削除します。これを行う方法?

私はDeauthorize Callback URLを与えることができます。アプリケーションの一部を削除すると、このページにリダイレクトされます。しかし、wtはdbからデータを削除するコードでなければなりません?私は、リダイレクト時にアクセストークンの詳細を投稿することになるので、私はアクセストークンを拒否し、その行を削除することができます。

+1

ここで質問を書くよりも時間がかかりません。 $ _REQUEST/$ _ GET/$ _ POSTの内容を電子メールで送信するページを作成します。コールバックURLを作成します。権限を与えてから、自分自身を認証解除します。電子メールをチェックすれば、利用可能なデータを正確に知ることができます。 –

答えて

13

それは明確にauthentication documentに述べています:

アプリの認証解除

のアプリのユーザーが アプリのダッシュボードやブロックで ニュースフィードでアプリを、それを削除すると、あなたのアプリをデベロッパーアプリケーションの コールバックURLを指定して、 を通知することができます。 アプリを削除する際に、 パラメータsigned_requestを含む HTTP POSTリクエストを送信します。 には、あなたのアプリをただ削除したユーザー のユーザーID(UID)が含まれています。あなたは このリクエストでユーザーのアクセストークンを受信しませんし、すべての既存のユーザー アクセストークンは自動的に が期限切れになります。

だから、独自のdocuementにsigned_request機能を使用して:

<?php 
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 sig 
    $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, '-_', '+/')); 
} 

$result = parse_signed_request($_REQUEST['signed_request'],"APP_SECRET"); 


$myFile = "deauthorize.txt"; 
$fh = fopen($myFile, 'w') or die("can't open file"); 
fwrite($fh, $result["user_id"] . "\n"); 
fclose($fh); 

?> 

だから、すべてを行う必要が$result["user_id"]クエリあなたのDBを取得したレコードを削除しています。

P.S:私はactiveと呼ばれる新しいフィールドを追加することをお勧めしますし、ちょうどすべて一緒にレコードを削除するのではなく、ユーザーを無効にします。

EDIT:
Facebookは許可を取り消すのURLにユーザーをリダイレクトされません!それだけで、それをpingます:

のFacebookのpingこのURLをユーザー は、このコードは動作していない

+0

これはまさに必要なものです。APP_SECRETを実際のapp_secretに置き換えることを忘れないでください。 – testing123

0

あなたのアプリを認証解除したときに、それは、ユーザがデータだけが渡されたアプリを認証解除したときに呼び出されますが、機能が "1"(テストユーザーと自分のFBアカウントがアプリがライブのときにテストされます)

file_put_contents( "test.txt"、$ fbUserId。 "" print_r($ _REQUEST ['signed_request']) ));

test.txtファイル "1"

関連する問題