Facebook签署请求问题 [英] Facebook signed request problem

查看:112
本文介绍了Facebook签署请求问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想为我的Facebook页面写一个风扇,但它没有工作,我没有在网间找到任何帮助。

  require'facebook.php'; 

$ app_id ='16850872653xxxx';
$ app_secret ='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
$ facebook = new Facebook(array(
'appId'=> $ app_id,
'secret'=> $ app_secret,
'cookie'=> true
));

$ signed_request = $ _REQUEST ['signed_request'];

// echo $ signed_request;

list($ encoded_sig,$ payload)= explode('。',$ signed_request,2);


//解码数据
$ sig = base64_url_decode($ encoded_sig);
$ data = json_decode(base64_url_decode($ payload),true);

//检查sig
$ expected_sig = hash_hmac('sha256',$ payload,$ app_secret,$ raw = true);

函数base64_url_decode($ input){
return base64_decode(strtr($ input,'-_','+ /'));
}

if($ signed_request-> page->喜欢){
echo此内容仅适用于粉丝!
} else {
echo请点击Like按钮查看此标签!;
}

我正在使用此代码...但它只是跳到github,在那里我已经下载了facebook.php ....



有人看到这段代码有问题吗?



只需跳转到github并且json_decode不工作...

解决方案

您发送的代码有一些错误。这是我使用的,它的工作原理:

  if(isset($ _ REQUEST ['signed_request'])){
$ encoded_sig = null;
$ payload = null;
list($ encoded_sig,$ payload)= explode('。',$ _REQUEST ['signed_request'],2);
$ sig = base64_decode(strtr($ encoded_sig,'-_','+ /'));
$ data = json_decode(base64_decode(strtr($ payload,'-_','+ /'),true));
if($ data-> page->喜欢){
echo此内容仅供粉丝使用!
} else {
echo请点击Like按钮查看此标签!;
}
}

不要在您的应用程序密钥上发布论坛,请尽快编辑您的帖子。


I want to write a fangate for my facebook page, but it didnt work and i doesnt find any help on the inter net

require 'facebook.php';

$app_id = '16850872653xxxx';
$app_secret = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
$facebook = new Facebook(array(
'appId' => $app_id,
'secret' => $app_secret,
'cookie' => true
));

$signed_request = $_REQUEST['signed_request'];

//echo $signed_request;

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

// check sig
$expected_sig = hash_hmac('sha256', $payload, $app_secret, $raw = true);

function base64_url_decode($input) {
return base64_decode(strtr($input, '-_', '+/'));
}

if($signed_request->page->liked) {
echo "This content is for Fans only!";
} else {
echo "Please click on the Like button to view this tab!";
}

I am using this code... but it just jumps to github where i have downloaded the facebook.php....

does anybody see a problem with this code?

the require just jumps to github and the json_decode doesnt work...

解决方案

There are a few errors with the code you sent. This is what I use, and it works:

if (isset($_REQUEST['signed_request'])) {
      $encoded_sig = null;
      $payload = null;
      list($encoded_sig, $payload) = explode('.', $_REQUEST['signed_request'], 2);
      $sig = base64_decode(strtr($encoded_sig, '-_', '+/'));
      $data = json_decode(base64_decode(strtr($payload, '-_', '+/'), true));
      if($data->page->liked) {
          echo "This content is for Fans only!";
        } else {
          echo "Please click on the Like button to view this tab!";
        }
    }

And don't post your application secret key on the forum, please edit your post as soon as possible.

这篇关于Facebook签署请求问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆