コード例 #1
0
ファイル: liveidoauth.php プロジェクト: nProfessor/Mytb
	public function Authorize()
	{
		$GLOBALS["APPLICATION"]->RestartBuffer();
		$bSuccess = false;
			if((isset($_REQUEST["code"]) && $_REQUEST["code"] <> '') && CSocServAuthManager::CheckUniqueKey())
			{
				$redirect_uri= CSocServUtil::GetCurUrl('auth_service_id='.self::ID, array("code"));
				$appID = trim(self::GetOption("liveid_appid"));
				$appSecret = trim(self::GetOption("liveid_appsecret"));

				$gAuth = new CLiveIDOAuthInterface($appID, $appSecret, $_REQUEST["code"]);

				if($gAuth->GetAccessToken($redirect_uri) !== false)
				{
					$arLiveIDUser = $gAuth->GetCurrentUser();

					if ($arLiveIDUser['id'] <> '')
					{
						$email = $first_name = $last_name = "";
						$login = "******".$arLiveIDUser['id'];
						$uId = $arLiveIDUser['id'];
						if($arLiveIDUser['first_name'] <> '')
							$first_name = $arLiveIDUser['first_name'];
						if($arLiveIDUser['last_name'] <> '')
							$last_name = $arLiveIDUser['last_name'];
						if($arLiveIDUser['emails']['preferred'] <> '')
						{
							$email = $arLiveIDUser['emails']['preferred'];
							$login = $arLiveIDUser['emails']['preferred'];
							$uId = $arLiveIDUser['emails']['preferred'];
						}
						$arFields = array(
							'EXTERNAL_AUTH_ID' => self::ID,
							'XML_ID' => $uId,
							'LOGIN' => $login,
							'EMAIL' => $email,
							'NAME'=> $first_name,
							'LAST_NAME'=> $last_name,
						);
						$arFields["PERSONAL_WWW"] = $arLiveIDUser["link"];

						$bSuccess = $this->AuthorizeUser($arFields);

					}
				}
			}

		$url = ($GLOBALS["APPLICATION"]->GetCurDir() == "/login/") ? "/auth/" : $GLOBALS["APPLICATION"]->GetCurDir();
		if(isset($_REQUEST["state"]))
		{
			$arState = array();
			parse_str($_REQUEST["state"], $arState);

			if(isset($arState['backurl']))
				$url = parse_url($arState['backurl'], PHP_URL_PATH);
		}
		if($bSuccess !== true)
			$url .= (strpos($url, '?') === false? '?':'&').'auth_service_id='.self::ID.'&auth_service_error='.$bSuccess;
	
		echo '
<script type="text/javascript">
if(window.opener)
	window.opener.location = \''.CUtil::JSEscape($url).'\';
window.close();
</script>
';
		die();
	}
コード例 #2
0
ファイル: liveidoauth.php プロジェクト: ASDAFF/open_bx
	public function Authorize()
	{
		global $APPLICATION;

		$APPLICATION->RestartBuffer();
		$bSuccess = SOCSERV_AUTHORISATION_ERROR;

		if(isset($_REQUEST["code"]) && $_REQUEST["code"] != '' && CSocServAuthManager::CheckUniqueKey())
		{
			if(IsModuleInstalled('freetrix24') && defined('BX24_HOST_NAME'))
				$redirect_uri = self::CONTROLLER_URL."/redirect.php";
			else
				$redirect_uri = CSocServUtil::ServerName()."/freetrix/tools/oauth/liveid.php";

			$appID = trim(self::GetOption("liveid_appid"));
			$appSecret = trim(self::GetOption("liveid_appsecret"));

			$gAuth = new CLiveIDOAuthInterface($appID, $appSecret, $_REQUEST["code"]);

			if($gAuth->GetAccessToken($redirect_uri) !== false)
			{
				$arLiveIDUser = $gAuth->GetCurrentUser();

				if(is_array($arLiveIDUser) &&  ($arLiveIDUser['id'] <> ''))
				{
					$email = $first_name = $last_name = "";
					$login = "******".$arLiveIDUser['id'];
					$uId = $arLiveIDUser['id'];
					if($arLiveIDUser['first_name'] <> '')
						$first_name = $arLiveIDUser['first_name'];
					if($arLiveIDUser['last_name'] <> '')
						$last_name = $arLiveIDUser['last_name'];
					if($arLiveIDUser['emails']['preferred'] <> '')
					{
						$email = $arLiveIDUser['emails']['preferred'];
						$login = $arLiveIDUser['emails']['preferred'];
						$uId = $arLiveIDUser['emails']['preferred'];
					}
					$arFields = array(
						'EXTERNAL_AUTH_ID' => self::ID,
						'XML_ID' => $uId,
						'LOGIN' => $login,
						'EMAIL' => $email,
						'NAME'=> $first_name,
						'LAST_NAME'=> $last_name,
					);
					$arFields["PERSONAL_WWW"] = $arLiveIDUser["link"];
					if(isset($arLiveIDUser['access_token']))
						$arFields["OATOKEN"] = $arLiveIDUser['access_token'];

					if(isset($arLiveIDUser['refresh_token']))
						$arFields["REFRESH_TOKEN"] = $arLiveIDUser['refresh_token'];

					if(isset($arLiveIDUser['expires_in']))
						$arFields["OATOKEN_EXPIRES"] = time() + $arLiveIDUser['expires_in'];
					if(strlen(SITE_ID) > 0)
						$arFields["SITE_ID"] = SITE_ID;
					$bSuccess = $this->AuthorizeUser($arFields);

				}
			}
		}
		$url = ($APPLICATION->GetCurDir() == "/login/") ? "" : $APPLICATION->GetCurDir();
		$aRemove = array("logout", "auth_service_error", "auth_service_id", "code", "error_reason", "error", "error_description", "check_key", "current_fieldset");

		$mode = 'opener';
		if(isset($_REQUEST["state"]))
		{
			$arState = array();
			parse_str($_REQUEST["state"], $arState);
			if(isset($arState['backurl']))
			{
				$parseUrl = parse_url($arState['backurl']);
				$urlPath = $parseUrl["path"];
				$arUrlQuery = explode('&', $parseUrl["query"]);

				foreach($arUrlQuery as $key => $value)
				{
					foreach($aRemove as $param)
					{
						if(strpos($value, $param."=") === 0)
						{
							unset($arUrlQuery[$key]);
							break;
						}
					}
				}

				$url = (!empty($arUrlQuery)) ? $urlPath.'?'.implode("&", $arUrlQuery) : $urlPath;
			}

			if(isset($arState['mode']))
			{
				$mode = $arState['mode'];
			}
		}
		if($bSuccess === SOCSERV_REGISTRATION_DENY)
		{
			$url = (preg_match("/\?/", $url)) ? $url.'&' : $url.'?';
			$url .= 'auth_service_id='.self::ID.'&auth_service_error='.SOCSERV_REGISTRATION_DENY;
		}
		elseif($bSuccess !== true)
			$url = (isset($parseUrl)) ? $parseUrl.'?auth_service_id='.self::ID.'&auth_service_error='.$bSuccess : $APPLICATION->GetCurPageParam(('auth_service_id='.self::ID.'&auth_service_error='.$bSuccess), $aRemove);
		if(CModule::IncludeModule("socialnetwork") && strpos($url, "current_fieldset=") === false)
			$url = (preg_match("/\?/", $url)) ? $url."&current_fieldset=SOCSERV" : $url."?current_fieldset=SOCSERV";

		$url = CUtil::JSEscape($url);
		$location = ($mode == "opener") ? 'if(window.opener) window.opener.location = \''.$url.'\'; window.close();' : ' window.location = \''.$url.'\';';

		$JSScript = '
		<script type="text/javascript">
		'.$location.'
		</script>
		';

		echo $JSScript;

		die();
	}
コード例 #3
0
ファイル: liveidoauth.php プロジェクト: ASDAFF/entask.ru
	public function getFriendsList($limit = 0, $offset = 0)
	{
		$li = new CLiveIDOAuthInterface();

		if(IsModuleInstalled('bitrix24') && defined('BX24_HOST_NAME'))
		{
			$redirect_uri = self::CONTROLLER_URL."/redirect.php";
		}
		else
		{
			$redirect_uri = CSocServUtil::ServerName()."/bitrix/tools/oauth/liveid.php";
		}

		if($li->GetAccessToken($redirect_uri) !== false)
		{
			$res = $li->GetCurrentUserFriends($limit, $offset);
		}

		if(is_array($res) && is_array($res['data']))
		{
			foreach($res['data'] as $key => $contact)
			{
				$res['data'][$key]['uid'] = $contact['id'];
				$res['data'][$key]['url'] = $this->getProfileUrl($contact['id']);
			}
			return $res['data'];
		}

		return false;
	}
コード例 #4
0
    public function Authorize()
    {
        $GLOBALS["APPLICATION"]->RestartBuffer();
        $bSuccess = 1;
        if (isset($_REQUEST["code"]) && $_REQUEST["code"] != '' && CSocServAuthManager::CheckUniqueKey()) {
            $redirect_uri = CSocServUtil::GetCurUrl('auth_service_id=' . self::ID, array("code", "state", "backurl", "check_key"));
            $appID = trim(self::GetOption("liveid_appid"));
            $appSecret = trim(self::GetOption("liveid_appsecret"));
            $gAuth = new CLiveIDOAuthInterface($appID, $appSecret, $_REQUEST["code"]);
            if ($gAuth->GetAccessToken($redirect_uri) !== false) {
                $arLiveIDUser = $gAuth->GetCurrentUser();
                if ($arLiveIDUser['id'] != '') {
                    $email = $first_name = $last_name = "";
                    $login = "******" . $arLiveIDUser['id'];
                    $uId = $arLiveIDUser['id'];
                    if ($arLiveIDUser['first_name'] != '') {
                        $first_name = $arLiveIDUser['first_name'];
                    }
                    if ($arLiveIDUser['last_name'] != '') {
                        $last_name = $arLiveIDUser['last_name'];
                    }
                    if ($arLiveIDUser['emails']['preferred'] != '') {
                        $email = $arLiveIDUser['emails']['preferred'];
                        $login = $arLiveIDUser['emails']['preferred'];
                        $uId = $arLiveIDUser['emails']['preferred'];
                    }
                    $arFields = array('EXTERNAL_AUTH_ID' => self::ID, 'XML_ID' => $uId, 'LOGIN' => $login, 'EMAIL' => $email, 'NAME' => $first_name, 'LAST_NAME' => $last_name);
                    $arFields["PERSONAL_WWW"] = $arLiveIDUser["link"];
                    if (strlen(SITE_ID) > 0) {
                        $arFields["SITE_ID"] = SITE_ID;
                    }
                    $bSuccess = $this->AuthorizeUser($arFields);
                }
            }
        }
        $url = $GLOBALS["APPLICATION"]->GetCurDir() == "/login/" ? "/auth/" : $GLOBALS["APPLICATION"]->GetCurDir();
        if (isset($_REQUEST["state"])) {
            $arState = array();
            parse_str($_REQUEST["state"], $arState);
            if (isset($arState['backurl'])) {
                $url = parse_url($arState['backurl'], PHP_URL_PATH);
            }
        }
        $aRemove = array("logout", "auth_service_error", "auth_service_id", "code", "error_reason", "error", "error_description", "check_key", "current_fieldset", "backurl", "state");
        if ($bSuccess === 2) {
            $url = preg_match("/\\?/", $url) ? $url . '&' : $url . '?';
            $url .= 'auth_service_id=' . self::ID . '&auth_service_error=' . $bSuccess;
        } elseif ($bSuccess !== true) {
            $url = isset($parseUrl) ? $parseUrl . '?auth_service_id=' . self::ID . '&auth_service_error=' . $bSuccess : $GLOBALS['APPLICATION']->GetCurPageParam('auth_service_id=' . self::ID . '&auth_service_error=' . $bSuccess, $aRemove);
        }
        if (CModule::IncludeModule("socialnetwork")) {
            $url = preg_match("/\\?/", $url) ? $url . "&current_fieldset=SOCSERV" : $url . "?current_fieldset=SOCSERV";
        }
        echo '
<script type="text/javascript">
if(window.opener)
	window.opener.location = \'' . CUtil::JSEscape($url) . '\';
window.close();
</script>
';
        die;
    }