Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Autoría | Ultima modificación | Ver Log |

<?php
namespace LeadersLinked\Library;

class Facebook
{
    /**
     * 
     * @var array
     */
    private $config;

    
    /**
     * 
     * @param array $config
     */
    public function __construct($config)
    {
        $this->config = $config;
    }
    
    /**
     * 
     * @param string $input
     * @return string
     */
    public static function base64_url_decode($input) {
        return base64_decode(strtr($input, '-_', '+/'));
    }
    
    
    /**
     * 
     * @param string $signed_request
     * @return NULL|array
     */
    public function parse_signed_request($signed_request) 
    {
        list($encoded_sig, $payload) = explode('.', $signed_request, 2);
        $secret = $this->config['leaderslinked.facebook.app_password'];
        
        // decode the data
        $sig = self::base64_url_decode($encoded_sig);
        $data = json_decode(self::base64_url_decode($payload), true);
        
        // confirm the signature
        $raw = true;
        $expected_sig = hash_hmac('sha256', $payload, $secret, $raw);
        if ($sig !== $expected_sig) {
            error_log('Facebook Bad Signed JSON signature!');
            return null;
        }
        
        return $data;
    }
    

}