3

Facebook アカウントでアプリを作成し、アクセス トークン (php) を使用して友人に投稿しました。

しかし、別のユーザーが自分のアプリ ID とシークレットを使用して友人に投稿できず、エラーが発生します

API 引数で指定された appsecret_proof が無効です

私は無効にしました

アプリの設定で必要なアプリの秘密の証拠

解決策はありますか?

public function facebookUsershare() { 
require '../facebook/src/facebook.php'; $facebook = new Facebook(array( 'appId' => 'app     id', 'secret' => 'secret_key', )); 

$privacy = array( 'description' => 'Vladimir Sergeevich', 'value' => 'CUSTOM', 'friends'   =>'friend id' 'allow' => 'loged in user' );
try {
$result = $facebook->api('/me/feed', 'POST', array( "access_token" => 'access_token',   'picture' => "path to image", 'link' => "gmail.com";, 'name' => "Go wi6 7", 'caption' =>   "capn", 'privacy' => json_encode($privacy) ));

echo 'Successfully posted to Facebook Personal Profile'; //return $facebookfrndids; }   catch(Exception $e) { 
echo $e->getMessage(); 
return false; } 
4

2 に答える 2

2

ドキュメントに関しては:

Graph API 呼び出しは、クライアントから、またはクライアントに代わってサーバーから行うことができます。サーバーからの呼び出しは、appsecret_proof というパラメーターを追加することで、より安全に行うことができます。

appsecret_proofしたがって、追加のパラメーターを一緒に指定する必要がありますaccess_token。は、アプリ シークレットで署名されたappsecret_proofデジタル署名です。access_token署名を確認する必要がありますaccess_token。取得appsecret_proofするには、次のように署名を計算する必要があります。

secret = 'app secret'
token = 'access token'
digest = OpenSSL::Digest.new('sha256')
proof = OpenSSL::HMAC.digest(digest, secret, token)

# result params:
"access_token=#{token}&appsecret_proof=#{proof}"

例は Ruby 言語ですが、これは言語の問題ではありません。hmac署名 APIについては、言語マニュアルを参照してください。

于 2016-07-08T13:48:55.077 に答える