public function prepareUser($yandexUser, $short = false) { $id = $yandexUser['id']; $userFields = array('EXTERNAL_AUTH_ID' => static::ID, 'XML_ID' => $id, 'LOGIN' => static::LOGIN_PREFIX . $id, 'NAME' => $yandexUser['first_name'], 'LAST_NAME' => $yandexUser['last_name'], 'OATOKEN' => $this->entityOAuth->getToken(), 'OATOKEN_EXPIRES' => $this->entityOAuth->getAccessTokenExpires()); if (strlen($userFields["NAME"]) <= 0) { $userFields["NAME"] = $yandexUser["login"]; } if (isset($yandexUser["emails"]) && is_array($yandexUser["emails"]) && count($yandexUser["emails"]) > 0) { $userFields["EMAIL"] = $yandexUser['emails'][0]; } if (!$short && !empty($yandexUser['default_avatar_id'])) { $picture_url = "https://avatars.yandex.net/get-yapic/" . $yandexUser["default_avatar_id"] . "/islands-200"; $temp_path = CFile::GetTempName('', 'picture.jpg'); $ob = new \Bitrix\Main\Web\HttpClient(array("redirect" => true)); $ob->download($picture_url, $temp_path); $arPic = CFile::MakeFileArray($temp_path); if ($arPic) { $userFields["PERSONAL_PHOTO"] = $arPic; } } if (strlen(SITE_ID) > 0) { $userFields["SITE_ID"] = SITE_ID; } return $userFields; }
public function prepareUser($arFBUser, $short = false) { $arFields = array('EXTERNAL_AUTH_ID' => self::ID, 'XML_ID' => $arFBUser["id"], 'LOGIN' => "FB_" . $arFBUser["id"], 'EMAIL' => $arFBUser["email"] != '' ? $arFBUser["email"] : '', 'NAME' => $arFBUser["first_name"], 'LAST_NAME' => $arFBUser["last_name"], 'OATOKEN' => $this->entityOAuth->getToken(), 'OATOKEN_EXPIRES' => $this->entityOAuth->getAccessTokenExpires()); if (!$short && isset($arFBUser['picture']['data']['url']) && !$arFBUser['picture']['data']['is_silhouette']) { $picture_url = CFacebookInterface::GRAPH_URL . '/' . $arFBUser['id'] . '/picture?type=large'; $temp_path = CFile::GetTempName('', 'picture.jpg'); $ob = new \Bitrix\Main\Web\HttpClient(array("redirect" => true)); $ob->download($picture_url, $temp_path); $arPic = CFile::MakeFileArray($temp_path); if ($arPic) { $arFields["PERSONAL_PHOTO"] = $arPic; } } if (isset($arFBUser['birthday'])) { if ($date = MakeTimeStamp($arFBUser['birthday'], "MM/DD/YYYY")) { $arFields["PERSONAL_BIRTHDAY"] = ConvertTimeStamp($date); } } if (isset($arFBUser['gender']) && $arFBUser['gender'] != '') { if ($arFBUser['gender'] == 'male') { $arFields["PERSONAL_GENDER"] = 'M'; } elseif ($arFBUser['gender'] == 'female') { $arFields["PERSONAL_GENDER"] = 'F'; } } $arFields["PERSONAL_WWW"] = $this->getProfileUrl($arFBUser['id']); if (strlen(SITE_ID) > 0) { $arFields["SITE_ID"] = SITE_ID; } return $arFields; }
public function Authorize() { global $APPLICATION; $APPLICATION->RestartBuffer(); $authError = SOCSERV_AUTHORISATION_ERROR; if (isset($_REQUEST["code"]) && $_REQUEST["code"] != '' && CSocServAuthManager::CheckUniqueKey()) { if (IsModuleInstalled('bitrix24') && defined('BX24_HOST_NAME')) { $redirect_uri = self::CONTROLLER_URL . "/redirect.php?redirect_to=" . urlencode(CSocServUtil::GetCurUrl('auth_service_id=' . self::ID, array("code"))); } else { $redirect_uri = CSocServUtil::GetCurUrl('auth_service_id=' . self::ID, array("code")); } $this->entityOAuth = new CFacebookInterface(false, false, $_REQUEST["code"]); if ($this->entityOAuth->GetAccessToken($redirect_uri) !== false) { $arFBUser = $this->entityOAuth->GetCurrentUser(); if (is_array($arFBUser) && isset($arFBUser["id"])) { $arFields = array('EXTERNAL_AUTH_ID' => self::ID, 'XML_ID' => $arFBUser["id"], 'LOGIN' => "FB_" . $arFBUser["id"], 'EMAIL' => $arFBUser["email"] != '' ? $arFBUser["email"] : '', 'NAME' => $arFBUser["first_name"], 'LAST_NAME' => $arFBUser["last_name"], 'OATOKEN' => $this->entityOAuth->getToken(), 'OATOKEN_EXPIRES' => $this->entityOAuth->getAccessTokenExpires()); if (isset($arFBUser['picture']['data']['url']) && !$arFBUser['picture']['data']['is_silhouette']) { $picture_url = CFacebookInterface::GRAPH_URL . '/' . $arFBUser['id'] . '/picture?type=large'; $temp_path = CFile::GetTempName('', 'picture.jpg'); $ob = new \Bitrix\Main\Web\HttpClient(array("redirect" => true)); $ob->download($picture_url, $temp_path); $arPic = CFile::MakeFileArray($temp_path); if ($arPic) { $arFields["PERSONAL_PHOTO"] = $arPic; } } if (isset($arFBUser['birthday'])) { if ($date = MakeTimeStamp($arFBUser['birthday'], "MM/DD/YYYY")) { $arFields["PERSONAL_BIRTHDAY"] = ConvertTimeStamp($date); } } if (isset($arFBUser['gender']) && $arFBUser['gender'] != '') { if ($arFBUser['gender'] == 'male') { $arFields["PERSONAL_GENDER"] = 'M'; } elseif ($arFBUser['gender'] == 'female') { $arFields["PERSONAL_GENDER"] = 'F'; } } $arFields["PERSONAL_WWW"] = $this->getProfileUrl($arFBUser['id']); if (strlen(SITE_ID) > 0) { $arFields["SITE_ID"] = SITE_ID; } $authError = $this->AuthorizeUser($arFields); } } } $bSuccess = $authError === true; $aRemove = array("logout", "auth_service_error", "auth_service_id", "code", "error_reason", "error", "error_description", "check_key", "current_fieldset"); if ($bSuccess) { CSocServUtil::checkOAuthProxyParams(); $url = $GLOBALS["APPLICATION"]->GetCurDir() == "/login/" ? "" : $GLOBALS["APPLICATION"]->GetCurDir(); if (isset($_REQUEST['backurl'])) { $parseUrl = parse_url($_REQUEST['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 ($authError === SOCSERV_REGISTRATION_DENY) { $url = preg_match("/\\?/", $url) ? $url . '&' : $url . '?'; $url .= 'auth_service_id=' . self::ID . '&auth_service_error=' . $authError; } elseif ($bSuccess !== true) { $url = isset($urlPath) ? $urlPath . '?auth_service_id=' . self::ID . '&auth_service_error=' . $authError : $GLOBALS['APPLICATION']->GetCurPageParam('auth_service_id=' . self::ID . '&auth_service_error=' . $authError, $aRemove); } if (CModule::IncludeModule("socialnetwork") && strpos($url, "current_fieldset=") === false) { $url .= (strpos($url, "?") === false ? '?' : '&') . "current_fieldset=SOCSERV"; } ?> <script type="text/javascript"> if(window.opener) window.opener.location = '<?php echo CUtil::JSEscape($url); ?> '; window.close(); </script> <?php die; }