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

4

终于我得到了答案......在应用程序的高级设置中禁用必需的应用程序秘密证明,并在base_facebook.php sdk中注释以下代码

if (isset($params['access_token'])) {
  $params['appsecret_proof'] = $this->getAppSecretProof($params['access_token']);
}
于 2014-01-10T11:30:23.397 回答
2

至于文件

可以从客户端或代表客户端从您的服务器进行图形 API 调用。通过添加一个名为 appsecret_proof 的参数,可以更好地保护来自服务器的调用。

所以你需要指定额外的参数appsecret_proofaccess_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 回答