Вход Регистрация
Файл: Source/auth/Social/Protocol/Model/OAuth.php
Строк: 139
<?php
/**
 * Class Social_Protocol_Model_Oauth for oauth protocols
 */
class Social_Protocol_Model_OAuth extends Social_Protocol_Model_Base {
    public 
$request_tokens_raw;
    public 
$access_tokens_raw;

    function 
errorMessageByStatus$code null ) {
        
$http_status_codes = array(
            
200 => "OK: Success!",
            
304 => "Not Modified: There was no new data to return.",
            
400 => "Bad Request: The request was invalid.",
            
401 => "Unauthorized.",
            
403 => "Forbidden: The request is understood, but it has been refused.",
            
404 => "Not Found: The URI requested is invalid or the resource requested does not exists.",
            
406 => "Not Acceptable.",
            
500 => "Internal Server Error: Something is broken.",
            
502 => "Bad Gateway.",
            
503 => "Service Unavailable."
        
);

        if( ! 
$code && $this->api )
            
$code $this->api->http_code;

        if( isset( 
$http_status_codes$code ] ) )
            return 
$code " " $http_status_codes$code ];
    }

    function 
init() {
        if ( ! 
$this->config["keys"]["key"] || ! $this->config["keys"]["secret"] ){
            throw new 
Social_Exception"Application key and secret needed to connect to $this->network_name");
        }

        require_once 
Social_Auth::$config["sdk_path"] . "OAuth/OAuth.php";
        require_once 
Social_Auth::$config["sdk_path"] . "OAuth/OAuth1Client.php";

        if( 
$this->getToken"access_token" ) ){
            
$this->api = new OAuth1Client(
                
$this->config["keys"]["key"], $this->config["keys"]["secret"],
                
$this->getToken"access_token" ), $this->getToken"access_token_secret" )
            );
        } elseif( 
$this->getToken"request_token" ) ) {
            
$this->api = new OAuth1Client(
                
$this->config["keys"]["key"], $this->config["keys"]["secret"],
                
$this->getToken"request_token" ), $this->getToken"request_token_secret" )
            );
        } else {
            
$this->api = new OAuth1Client$this->config["keys"]["key"], $this->config["keys"]["secret"] );
        }
    }

    function 
startLogin() {
        
$tokens $this->api->requestToken$this->client );

        
$this->request_tokens_raw $tokens;


        if ( 
$this->api->http_code != 200 ){
            throw new 
Social_Exception"Auth failed! {$this->network_name} error: " $this->errorMessageByStatus$this->api->http_code ));
        }

        if ( ! isset( 
$tokens["oauth_token"] ) ){
            throw new 
Social_Exception"Auth failed! $this->network_name: invalid oauth token.");
        }

        
$this->setToken"request_token"$tokens["oauth_token"] );
        
$this->setToken"request_token_secret"$tokens["oauth_token_secret"] );

        
Social_Auth::redirect$this->api->authorizeUrl$tokens ) );
    }

    function 
finishLogin() {
        
$oauth_token    = (array_key_exists('oauth_token',$_REQUEST))?$_REQUEST['oauth_token']:"";
        
$oauth_verifier = (array_key_exists('oauth_verifier',$_REQUEST))?$_REQUEST['oauth_verifier']:"";

        if ( ! 
$oauth_token || ! $oauth_verifier ){
            throw new 
Social_Exception"Auth failed! $this->network_name: invalid oauth verifier." );
        }

        
$tokens $this->api->accessToken$oauth_verifier );

        
$this->access_tokens_raw $tokens;

        if ( 
$this->api->http_code != 200 ){
            throw new 
Social_Exception"Auth failed! $this->network_name error: " $this->errorMessageByStatus$this->api->http_code ) );
        }

        if ( ! isset( 
$tokens["oauth_token"] ) ){
            throw new 
Social_Exception"Auth failed! $this->network_name: invalid access token." );
        }

        
$this->deleteToken"request_token" );
        
$this->deleteToken"request_token_secret" );

        
$this->setToken"access_token"$tokens['oauth_token'] );
        
$this->setToken"access_token_secret" $tokens['oauth_token_secret'] );

        
$this->connectUser();
    }
}
Онлайн: 1
Реклама