我在我的脸书帐户中创建了一个应用程序,并使用我的访问令牌(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; }
答案 0 :(得分:5)
最后我得到了答案.... 在app的高级设置中禁用所需的应用程序机密证明,并在base_facebook.php sdk中注释以下代码
if (isset($params['access_token'])) {
$params['appsecret_proof'] = $this->getAppSecretProof($params['access_token']);
}
答案 1 :(得分:1)
可以代表客户端或服务器进行图形API调用 客户。通过添加a可以更好地保护来自服务器的呼叫 参数叫做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。