Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php API参数中提供的appsecret\u证明无效_Php_Facebook Php Sdk_App Secret - Fatal编程技术网

Php API参数中提供的appsecret\u证明无效

Php API参数中提供的appsecret\u证明无效,php,facebook-php-sdk,app-secret,Php,Facebook Php Sdk,App Secret,我已经在我的facebook帐户中创建了一个应用程序,并使用我的访问令牌(php)向我的朋友发布了帖子 但是另一个用户无法使用我的应用程序id和secret向他们的朋友发帖并获取错误信息 API参数中提供的appsecret\u证明无效 我有残疾 我的应用程序设置中需要的应用程序机密证明 有什么解决办法吗 public function facebookUsershare() { require '../facebook/src/facebook.php'; $facebook = new F

我已经在我的facebook帐户中创建了一个应用程序,并使用我的访问令牌(php)向我的朋友发布了帖子

但是另一个用户无法使用我的应用程序id和secret向他们的朋友发帖并获取错误信息

API参数中提供的appsecret\u证明无效

我有残疾

我的应用程序设置中需要的应用程序机密证明

有什么解决办法吗

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; } 

最后我得到了答案。。。。
在app的高级设置中禁用所需的app secret-proof,并在base_facebook.php sdk中注释以下代码

if (isset($params['access_token'])) {
  $params['appsecret_proof'] = $this->getAppSecretProof($params['access_token']);
}
至于:

图形API调用可以从客户端或代表服务器进行 客户群。通过添加 参数名为appsecret\u-proof

因此,您需要将附加参数
appsecret\u-proof
access\u-token
一起指定。
appsecret\u证明
是用你的appsecret签名的
access\u令牌
的数字签名。签名需要确认
访问\u令牌
。要获得
appsecret\u-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。

您应该编辑您的问题,而不是在评论中发布代码。您不应该这样做。更新您的php sdk文件。从sdk v4.0.11开始,您可以使用
FacebookSession::enableAppSecretProof(false)
要控制此操作,您可以使用FacebookSession::enableAppSecretProof(false);或者在facebook应用程序控制台中打开“需要应用程序机密证明”。使用官方facebook SDK时无需执行任何操作,只要您在web服务器中正确设置了facebook应用程序机密。如果您没有应用程序的高级设置中禁用所需的应用程序机密证明,或者应用程序的高级设置为空-适用于我,我应该在何处传递此
appsecret\u-proof
。我在请求体中使用带有access_令牌的php.togater