113 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
		
		
			
		
	
	
			113 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| 
								 | 
							
								<?php
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								namespace phpoauthlib2;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								require "ccurl.php";
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								use phpoauthlib2\ccurl;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class OAUTH_SCOPES {
							 | 
						||
| 
								 | 
							
								    const EMAIL = "EMAIL";
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class OAuthDataProvider {
							 | 
						||
| 
								 | 
							
								    protected $version = "2.0";
							 | 
						||
| 
								 | 
							
								    protected $name = "undefined";
							 | 
						||
| 
								 | 
							
								    protected $responseType = "code";
							 | 
						||
| 
								 | 
							
								    protected $header = "Authorization: Bearer";
							 | 
						||
| 
								 | 
							
								    protected $profile = "";
							 | 
						||
| 
								 | 
							
								    protected $dialog = "";
							 | 
						||
| 
								 | 
							
								    protected $nonce = null;
							 | 
						||
| 
								 | 
							
								    protected $accessToken = null;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    protected $state = "";
							 | 
						||
| 
								 | 
							
								    protected $redirectURL = "";
							 | 
						||
| 
								 | 
							
								    protected $scope = "";
							 | 
						||
| 
								 | 
							
								    protected $clientId = "";
							 | 
						||
| 
								 | 
							
								    protected $client_secret = "";
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    protected $request = null;
							 | 
						||
| 
								 | 
							
								    protected $profileData = [];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function __construct($profile, $dialog, $accessToken, $request, $header="Authorization: Bearer") {
							 | 
						||
| 
								 | 
							
								        $this->profile = $profile;
							 | 
						||
| 
								 | 
							
								        $this->dialog = $dialog;
							 | 
						||
| 
								 | 
							
								        $this->accessToken = $accessToken;
							 | 
						||
| 
								 | 
							
								        $this->header = $header;
							 | 
						||
| 
								 | 
							
								        $this->request = $request;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function getLoginUrl() {
							 | 
						||
| 
								 | 
							
								        $urlBuilder = [];
							 | 
						||
| 
								 | 
							
								        $urlBuilder[] = "client_id=" . $this->clientId;
							 | 
						||
| 
								 | 
							
								        $urlBuilder[] = "response_type=" . $this->responseType;
							 | 
						||
| 
								 | 
							
								        $urlBuilder[] = "scope=" . $this->scope;
							 | 
						||
| 
								 | 
							
								        $urlBuilder[] = "state=" . $this->state;
							 | 
						||
| 
								 | 
							
								        $urlBuilder[] = "redirect_uri=" . urlencode($this->redirectURL);
							 | 
						||
| 
								 | 
							
								        return $this->dialog . "?" . implode("&", $urlBuilder);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    protected function getToken() {
							 | 
						||
| 
								 | 
							
								        $tokenBuilder = [];
							 | 
						||
| 
								 | 
							
								        $tokenBuilder["client_id"] = $this->clientId;
							 | 
						||
| 
								 | 
							
								        $tokenBuilder["client_secret"] = $this->client_secret;
							 | 
						||
| 
								 | 
							
								        $tokenBuilder["grant_type"] = "authorization_code";
							 | 
						||
| 
								 | 
							
								        $tokenBuilder["redirect_uri"] = htmlspecialchars($this->redirectURL);
							 | 
						||
| 
								 | 
							
								        $tokenBuilder["code"] = $this->request["code"];
							 | 
						||
| 
								 | 
							
								        $curl = new ccurl($this->accessToken);
							 | 
						||
| 
								 | 
							
								        $curl->setPost($tokenBuilder);
							 | 
						||
| 
								 | 
							
								        $curl->createCurl();
							 | 
						||
| 
								 | 
							
								        return (string)$curl;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    protected function parseToken() {
							 | 
						||
| 
								 | 
							
								        $token = $this->getToken();
							 | 
						||
| 
								 | 
							
								        $convertedToken = json_decode($token, true);
							 | 
						||
| 
								 | 
							
								        if (!$convertedToken) {
							 | 
						||
| 
								 | 
							
								            $realToken = $token;
							 | 
						||
| 
								 | 
							
								        } else {
							 | 
						||
| 
								 | 
							
								            $realToken = $convertedToken["access_token"];
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        return $realToken;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function getProfile() {
							 | 
						||
| 
								 | 
							
								        $token = $this->parseToken();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $profileUrl = $this->profile . "=" . $token;
							 | 
						||
| 
								 | 
							
								        $curl = new ccurl($profileUrl);
							 | 
						||
| 
								 | 
							
								        $curl->addHeader($this->header . " " . $token);
							 | 
						||
| 
								 | 
							
								        $curl->createCurl();
							 | 
						||
| 
								 | 
							
								        $this->profileData = json_decode((string)$curl, true);
							 | 
						||
| 
								 | 
							
								        return (string)$curl;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function getEmail() {
							 | 
						||
| 
								 | 
							
								        return null;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function getFirstName() {
							 | 
						||
| 
								 | 
							
								        return null;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function getLastName() {
							 | 
						||
| 
								 | 
							
								        return null;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function getGender() {
							 | 
						||
| 
								 | 
							
								        return null;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function getId() {
							 | 
						||
| 
								 | 
							
								        return null;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function getRawProfile() {
							 | 
						||
| 
								 | 
							
								        return $this->profileData;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function getSource() {
							 | 
						||
| 
								 | 
							
								        return null;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 |