2012-01-11 3 views
2

내 Yii 사이트에 페이스 북 등록을 구현 중입니다. 설치 응용 프로그램입니다. 등록을 위해서는 한 단계에서 페이스 북 사용자 데이터를 해독해야합니다. Facebook은 정보를 해독하는 코드를 제공합니다. 나는이 코드를 구현하지만, 가진 오류가 같은 :Yii Facebook 등록

"치명적인 오류 : C에서 정의되지 않은 함수 base64_url_decode()로 전화 : \ WAMP \ www가 \ CMA \ 응용 프로그램 \ 라인에 \ 컨트롤러 \ SiteController.php 보호 259"

내 코드는 사람이 사전에 .. 감사의 코드에 어떤 문제가 있는지 찾는 데 도움이 될 수

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에서이 코드를 구현 ...입니다!

답변

1

도움 주셔서 감사합니다. 그러나 문제가 해결되었습니다 ...

base64_url_decode 클래스를 새로 작성하는 모델에 util 클래스를 추가하고 정적 함수 base64_url_decode으로 이름을 지정했습니다. 함수를 util::base64_url_decode이라고했습니다.

2

base64_url_decode() 표준 PHP 함수는 아래처럼 정의해야되지 않습니다

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

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

당신이 PHP 클래스의 경우 http://php.net/manual/de/function.base64-encode.php

+0

의견을 보내 주셔서 감사합니다. – ashutosh

0

에서 촬영하고, base64_url_decode이라고 공용 함수 인 경우 $this->base64_url_decode($input)으로 사용해야합니다. 그렇지 않습니까? provided by Facebook Documentation 예에서 은 단지 없이 호출하는 이유입니다.

+0

고맙습니다 제안을위한 흐름 및 schmunk! – ashutosh