facebook - Yii Facebook 注册

标签 facebook yii base64 registration json

我正在我的 Yii 站点中实现 facebook 注册..我设置了应用程序。对于注册,第一步,我们需要解码由 facebook 发送的 facebook 用户数据。 Facebook 提供了解码信息的代码。我实现了这段代码,但出现了如下错误:

“ fatal error :在第 259 行调用 C:\wamp\www\cma\app\protected\controllers\SiteController.php 中未定义的函数 base64_url_decode()”

我的代码片段是

public function actionFacebookLogin()
    {
        //error_reporting(E_ALL);
        //ini_set("display_errors", 1);

        $signed_request = $_POST['signed_request'];
        Yii::log("actionFacebookLogin called.....");
        //list($encoded_sig,$payload) = explode('.', $signed_request,2);

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

        Yii::log('in the list');
        //decode the data
        $sig =  base64_url_decode($encoded_sig);
        $data = json_decode(base64_url_decode($payload), true);

        if(strtoupper($data['algorithm'])!= 'HMAC-SHA256'){
            Yii::log('Unkonwon alogorithm.Expected HMAC-SHA256');
            //return null;
        }


        //check sig
        $expected_sig = hash_hmac('sha256', $payload, $secret,$raw=true);
        if($sig !== $expected_sig){
            Yii::log('Bad Signed JSON Signature');
            //return null;
        }
        //return $data;
        $this->render('facebookview',array('response'=>$data));

    }

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

我在我的 siteController 中实现了这段代码...

任何人都可以帮忙找出代码有什么问题吗? 提前致谢!

最佳答案

base64_url_decode() 不是标准 PHP 函数,您可能需要如下定义它:

function base64_url_encode($input) {
  return strtr(base64_encode($input), '+/=', '-_,');
}

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

取自http://php.net/manual/de/function.base64-encode.php

关于facebook - Yii Facebook 注册,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8814402/

相关文章:

css - Facebook Javascript SDK 在 Firefox 的响应式 Twitter Bootstrap 页面中导致额外的边距/填充

php - Yii - Cdbcriteria - 在具有关系的条件之间选择 where 运算符

php - 在 CGridView 中显示连接表中的列

c# - Base64 到 UTF-8 字符串解码 - 阿拉伯文本

facebook - Gigya 网站抛出错误 : Received message of type object from (domain), 需要一个字符串 - all.js:56

iOS Facebook 状态位置

ios - 使用 Facebook 应用程序时 Facebook 登录回调不起作用 - Swift

frameworks - Yii ,从 $_FILES 保存图像,但不使用模型

base64 - base64编码字符串前面的 "77u/"是什么?

c# - 将 JavaScript 转换为 C#