sun singer us / social-auth
通过社交网络进行身份验证
Requires
- php: >=5.6.0
This package is not auto-updated.
Last update: 2024-09-29 03:41:47 UTC
README
SocialAuther 是一个 PHP 库,用于简化通过流行的社交网络和服务在您的网站上实现身份验证
注意: 在本例中,设置是为 本地服务器 进行的
注意: 要使用库,请连接类自动加载器 require_once 'lib/SocialAuther/autoload.php';
使用方法
通过 VK 进行身份验证
注意! 如果在使用由 $vkAdapter->getAuthUrl() 方法生成的授权链接时,作为响应输出消息 {"error":"invalid_request","error_description":"Security Error"}
,那么您需要前往 您的 VK 账户设置页面。在“您的页面安全”部分,点击“查看活动历史记录”。在打开的窗口中,点击“结束所有会话”,以清除 VK 缓存。这样,出现的 security_error
问题将得到解决。
要通过对 VK 社交网络进行身份验证,您需要先创建一个新的项目并配置参数:client_id
、client_secret
和 redirect_uri
- 步骤 1. 创建 新应用
- 名称: "SocialAuther Test"
- 类型: "网站"
- 步骤 2. 设置 "Open API" 部分
- 网站地址:
https:///auth?provider=vk
- 基本域名: "localhost"
- 网站地址:
- 步骤 3. 配置参数
client_id
、client_secret
和redirect_uri
client_id
- 位于选项 "应用程序 ID" 中。例如:3078654
client_secret
- 位于选项 "安全密钥" 中。例如:zrCHcmKAcBvblSUIBIwu
redirect_uri
- 位于选项 "网站地址" 中。例如:https:///auth?provider=vk
- 步骤 4. 使用 SocialAuther。
使用 SocialAuther
<?php
// конфигурация настроек адаптера
$vkAdapterConfig = array(
'client_id' => '3078654',
'client_secret' => 'zrCHcmKAcBvblSUIBIwu',
'redirect_uri' => 'https:///auth?provider=vk'
);
// создание адаптера и передача настроек
$vkAdapter = new SocialAuther\Adapter\Vk($vkAdapterConfig);
// передача адаптера в SocialAuther
$auther = new SocialAuther\SocialAuther($vkAdapter);
// аутентификация и вывод данных пользователя или вывод ссылки для аутентификации
if (!isset($_GET['code'])) {
echo '<p><a href="' . $auther->getAuthUrl() . '">Аутентификация через ВКонтакте</a></p>';
} else {
if ($auther->authenticate()) {
if (!is_null($auther->getSocialId()))
echo "Социальный ID пользователя: " . $auther->getSocialId() . '<br />';
if (!is_null($auther->getName()))
echo "Имя пользователя: " . $auther->getName() . '<br />';
if (!is_null($auther->getEmail()))
echo "Email пользователя: " . $auther->getEmail() . '<br />';
if (!is_null($auther->getSocialPage()))
echo "Ссылка на профиль пользователя: " . $auther->getSocialPage() . '<br />';
if (!is_null($auther->getSex()))
echo "Пол пользователя: " . $auther->getSex() . '<br />';
if (!is_null($auther->getBirthday()))
echo "День Рождения: " . $auther->getBirthday() . '<br />';
// аватар пользователя
if (!is_null($auther->getAvatar()))
echo '<img src="' . $auther->getAvatar() . '" />'; echo "<br />";
}
}
通过 Одноклассники 进行身份验证
要通过对 Одноклассники 社交网络进行身份验证,您需要先创建一个新的项目并配置参数:client_id
、client_secret
、redirect_uri
、public_key
- 步骤 1. 创建 新应用
- 选择 "在 Одноклассники 外部"
- 选择 "oAuth 授权"
- 步骤 2. 设置应用
- 名称: "SocialAuther Test"
- shortname: _www.odnoklassniki.ru/game/auther
- 应用链接:
https:///auth?provider=odnoklassniki
- "图片链接" 和 "头像链接": 链接到任何图片
- 步骤 3. 配置参数
client_id
、client_secret
、redirect_uri
、public_key
。所有必要信息都将在添加应用后发送到您的电子邮箱client_id
- 应用程序 ID。例如:658606315
client_secret
- 应用程序安全密钥。例如:C35045020A8C7C066F25C4C7
redirect_uri
- 应用链接。例如:https:///auth?provider=odnoklassniki
public_key
- 应用程序公共密钥。例如:BAMKABABACADCBBAB
- 步骤 4. 使用 SocialAuther。
使用 SocialAuther
<?php
$odnoklassnikiConfig = array(
'client_id' => '658606315',
'client_secret' => 'C35045020A8C7C066F25C4C7',
'redirect_uri' => 'https:///auth?provider=odnoklassniki',
'public_key' => 'BAMKABABACADCBBAB'
);
$odnoklassnikiAdapter = new SocialAuther\Adapter\Odnoklassniki($odnoklassnikiConfig);
$auther = new SocialAuther\SocialAuther($odnoklassnikiAdapter);
if (!isset($_GET['code'])) {
echo '<p><a href="' . $auther->getAuthUrl() . '">Аутентификация через Одноклассники</a></p>';
} else {
if ($auther->authenticate()) {
if (!is_null($auther->getSocialId()))
echo "Социальный ID пользователя: " . $auther->getSocialId() . '<br />';
if (!is_null($auther->getName()))
echo "Имя пользователя: " . $auther->getName() . '<br />';
if (!is_null($auther->getEmail()))
echo "Email пользователя: " . $auther->getEmail() . '<br />';
if (!is_null($auther->getSocialPage()))
echo "Ссылка на профиль пользователя: " . $auther->getSocialPage() . '<br />';
if (!is_null($auther->getSex()))
echo "Пол пользователя: " . $auther->getSex() . '<br />';
if (!is_null($auther->getBirthday()))
echo "День Рождения: " . $auther->getBirthday() . '<br />';
// аватар пользователя
if (!is_null($auther->getAvatar()))
echo '<img src="' . $auther->getAvatar() . '" />'; echo "<br />";
}
}
通过 Mail.ru 进行身份验证
- 步骤 1. 创建 新应用
- 同意规则
- 名称: "SocialAuther Test"
- 主页地址:
https:///auth?provider=mailru
- 步骤 2. 设置应用
- 下载提供的文件 receiver.html 并将其放入项目文件夹
- 要安装到本地服务器,请点击 "跳过"
- 步骤 3. 配置参数
client_id
、client_secret
、redirect_uri
client_id
- ID。例如:670707
client_secret
- 密钥。例如:a619062972f2073ded61405b8f8eccd2
redirect_uri
- 主页地址。例如:https:///auth?provider=mailru
- 步骤 4. 使用 SocialAuther。
使用 SocialAuther
<?php
$mailruAdapterConfig = array(
'client_id' => '670707',
'client_secret' => 'a619062972f2073ded61405b8f8eccd2',
'redirect_uri' => 'https:///auth?provider=mailru'
);
$mailruAdapter = new SocialAuther\Adapter\Mailru($mailruAdapterConfig);
$auther = new SocialAuther\SocialAuther($mailruAdapter);
if (!isset($_GET['code'])) {
echo '<p><a href="' . $auther->getAuthUrl() . '">Аутентификация через Mail.ru</a></p>';
} else {
if ($auther->authenticate()) {
if (!is_null($auther->getSocialId()))
echo "Социальный ID пользователя: " . $auther->getSocialId() . '<br />';
if (!is_null($auther->getName()))
echo "Имя пользователя: " . $auther->getName() . '<br />';
if (!is_null($auther->getEmail()))
echo "Email пользователя: " . $auther->getEmail() . '<br />';
if (!is_null($auther->getSocialPage()))
echo "Ссылка на профиль пользователя: " . $auther->getSocialPage() . '<br />';
if (!is_null($auther->getSex()))
echo "Пол пользователя: " . $auther->getSex() . '<br />';
if (!is_null($auther->getBirthday()))
echo "День Рождения: " . $auther->getBirthday() . '<br />';
// аватар пользователя
if (!is_null($auther->getAvatar()))
echo '<img src="' . $auther->getAvatar() . '" />'; echo "<br />";
}
}
通过 Yandex 进行认证
- 步骤 1. 创建 新的应用程序
- 步骤 2. 设置应用
- 名称: "SocialAuther Test"
- 权限: "Яндекс.Логин - 电子邮件地址; 出生日期; 用户名,全名,性别"
- 回调 URI:
https:///auth?provider=yandex
- 步骤 3. 配置参数
client_id
、client_secret
、redirect_uri
client_id
- 应用程序 ID。例如:bff0bfcaef054ab66c0538b39e0a86cf
client_secret
- 应用程序密码。例如:219ba88d386b114b9c6abef7eab4e8e4
redirect_uri
- 回调 URI。例如:https:///auth?provider=yandex
- 步骤 4. 使用 SocialAuther。
使用 SocialAuther
<?php
$yandexAdapterConfig = array(
'client_id' => 'bff0bfcaef054ab66c0538b39e0a86cf',
'client_secret' => '219ba88d386b114b9c6abef7eab4e8e4',
'redirect_uri' => 'https:///auth?provider=yandex'
);
$yandexAdapter = new SocialAuther\Adapter\Yandex($yandexAdapterConfig);
$auther = new SocialAuther\SocialAuther($yandexAdapter);
if (!isset($_GET['code'])) {
echo '<p><a href="' . $auther->getAuthUrl() . '">Аутентификация через Yandex</a></p>';
} else {
if ($auther->authenticate()) {
if (!is_null($auther->getSocialId()))
echo "Социальный ID пользователя: " . $auther->getSocialId() . '<br />';
if (!is_null($auther->getName()))
echo "Имя пользователя: " . $auther->getName() . '<br />';
if (!is_null($auther->getEmail()))
echo "Email пользователя: " . $auther->getEmail() . '<br />';
if (!is_null($auther->getSocialPage()))
echo "Ссылка на профиль пользователя: " . $auther->getSocialPage() . '<br />';
if (!is_null($auther->getSex()))
echo "Пол пользователя: " . $auther->getSex() . '<br />';
if (!is_null($auther->getBirthday()))
echo "День Рождения: " . $auther->getBirthday() . '<br />';
// аватар пользователя
if (!is_null($auther->getAvatar()))
echo '<img src="' . $auther->getAvatar() . '" />'; echo "<br />";
}
}
通过 Google 进行认证
- 步骤 1. 创建 新的应用程序
- 在菜单中选择 "API Access"
- 点击按钮 "Create an OAuth 2.0 Client ID..."
- 步骤 2. 设置应用
- API Access: "SocialAuther Test"
- 点击 Next
- 应用程序类型: "Web application"
- 您的网站或主机名:
localhost/google-auth
- 点击 Create client ID
- 步骤 3. 配置参数
client_id
、client_secret
、redirect_uri
client_id
- 应用程序 ID。例如:333739311538.apps.googleusercontent.com
client_secret
- 应用程序密码。例如:lZB3aW8UG8gDj6WVIEIcidt5
redirect_uri
- 回调 URI。例如:https:///auth?provider=google
- 步骤 4. 使用 SocialAuther。
使用 SocialAuther
<?php
$googleAdapterConfig = array(
'client_id' => '393337311853.apps.googleusercontent.com',
'client_secret' => 'B38WaUlZG8gDI6jIEWVct5id',
'redirect_uri' => 'https:///auth?provider=google'
);
$googleAdapter = new SocialAuther\Adapter\Google($googleAdapterConfig);
$auther = new SocialAuther\SocialAuther($googleAdapter);
if (!isset($_GET['code'])) {
echo '<p><a href="' . $auther->getAuthUrl() . '">Аутентификация через Google</a></p>';
} else {
if ($auther->authenticate()) {
if (!is_null($auther->getSocialId()))
echo "Социальный ID пользователя: " . $auther->getSocialId() . '<br />';
if (!is_null($auther->getName()))
echo "Имя пользователя: " . $auther->getName() . '<br />';
if (!is_null($auther->getEmail()))
echo "Email пользователя: " . $auther->getEmail() . '<br />';
if (!is_null($auther->getSocialPage()))
echo "Ссылка на профиль пользователя: " . $auther->getSocialPage() . '<br />';
if (!is_null($auther->getSex()))
echo "Пол пользователя: " . $auther->getSex() . '<br />';
if (!is_null($auther->getBirthday()))
echo "День Рождения: " . $auther->getBirthday() . '<br />';
// аватар пользователя
if (!is_null($auther->getAvatar()))
echo '<img src="' . $auther->getAvatar() . '" />'; echo "<br />";
}
}
通过 Facebook 进行认证
- 步骤 1. 创建 新的应用程序
- 点击按钮 "+ 创建新应用"
- 应用名称: "SocialAuther Test"
- 点击 "Continue"
- 步骤 2. 设置应用
- 点击 "Website with Facebook Login"
- 输入网站 URL:
https:///auth?provider=facebook
- 步骤 3. 配置参数
client_id
、client_secret
、redirect_uri
client_id
- 应用程序 ID。例如:346158195993388
client_secret
- 应用程序密钥。例如:2de1ab376d1c17cd47250920c05ab386
redirect_uri
- 回调 URI。例如:https:///auth?provider=facebook
- 步骤 4. 使用 SocialAuther。
使用 SocialAuther
<?php
$facebookAdapterConfig = array(
'client_id' => '346158195993388',
'client_secret' => '2de1ab376d1c17cd47250920c05ab386',
'redirect_uri' => 'https:///auth?provider=facebook'
);
$facebookAdapter = new SocialAuther\Adapter\Facebook($facebookAdapterConfig);
$auther = new SocialAuther\SocialAuther($facebookAdapter);
if (!isset($_GET['code'])) {
echo '<p><a href="' . $auther->getAuthUrl() . '">Аутентификация через Facebook</a></p>';
} else {
if ($auther->authenticate()) {
if (!is_null($auther->getSocialId()))
echo "Социальный ID пользователя: " . $auther->getSocialId() . '<br />';
if (!is_null($auther->getName()))
echo "Имя пользователя: " . $auther->getName() . '<br />';
if (!is_null($auther->getEmail()))
echo "Email пользователя: " . $auther->getEmail() . '<br />';
if (!is_null($auther->getSocialPage()))
echo "Ссылка на профиль пользователя: " . $auther->getSocialPage() . '<br />';
if (!is_null($auther->getSex()))
echo "Пол пользователя: " . $auther->getSex() . '<br />';
if (!is_null($auther->getBirthday()))
echo "День Рождения: " . $auther->getBirthday() . '<br />';
// аватар пользователя
if (!is_null($auther->getAvatar()))
echo '<img src="' . $auther->getAvatar() . '" />'; echo "<br />";
}
}
通过 Twitter 进行认证
注意! 为了正确通过 Twitter 进行认证,服务器上设置的时间和日期应接近实际。几分钟的误差是可以接受的,但较大偏差可能导致在生成认证 URL 阶段出现问题
- 步骤 1. 创建 新的应用程序
- 步骤 2. 配置参数
client_id
、client_secret
和redirect_uri
client_id
- API 密钥。例如:ef054ab66c0538b39e0a865cf
client_secret
- API 密钥。例如:6d6c0538b39e0a86cf219ba88d386b114b9c6abef7eab4e8e4
redirect_uri
- 回调 URL。例如:https:///auth?provider=twitter
- 步骤 3. 使用 SocialAuther。
使用 SocialAuther
<?php
// конфигурация настроек адаптера
$twiAdapterConfig = array(
'client_id' => 'ef054ab66c0538b39e0a865cf',
'client_secret' => '6d6c0538b39e0a86cf219ba88d386b114b9c6abef7eab4e8e4',
'redirect_uri' => 'https:///auth?provider=twitter'
);
// создание адаптера и передача настроек
$twiAdapter = new SocialAuther\Adapter\Twitter($twiAdapterConfig);
// передача адаптера в SocialAuther
$auther = new SocialAuther\SocialAuther($twiAdapter);
// аутентификация и вывод данных пользователя или вывод ссылки для аутентификации
if (!isset($_GET[$auther->getResponseType()]) {
echo '<p><a href="' . $auther->getAuthUrl() . '">Аутентификация через Twitter</a></p>';
} else {
if ($auther->authenticate()) {
if (!is_null($auther->getSocialId()))
echo "Социальный ID пользователя: " . $auther->getSocialId() . '<br />';
if (!is_null($auther->getName()))
echo "Имя пользователя: " . $auther->getName() . '<br />';
if (!is_null($auther->getEmail()))
echo "Email пользователя: " . $auther->getEmail() . '<br />';
if (!is_null($auther->getSocialPage()))
echo "Ссылка на профиль пользователя: " . $auther->getSocialPage() . '<br />';
if (!is_null($auther->getSex()))
echo "Пол пользователя: " . $auther->getSex() . '<br />';
if (!is_null($auther->getBirthday()))
echo "День Рождения: " . $auther->getBirthday() . '<br />';
// аватар пользователя
if (!is_null($auther->getAvatar()))
echo '<img src="' . $auther->getAvatar() . '" />'; echo "<br />";
}
}
使用 SocialAuther 与多个社交网络和服务
<?php
$adapterConfigs = array(
'vk' => array(
'client_id' => '3078654',
'client_secret' => 'zrCHcmKAcBvblSUIBIwu',
'redirect_uri' => 'https:///auth/?provider=vk'
),
'odnoklassniki' => array(
'client_id' => '658606315',
'client_secret' => 'C35045020A8C7C066F25C4C7',
'redirect_uri' => 'https:///auth?provider=odnoklassniki',
'public_key' => 'BAMKABABACADCBBAB'
),
'mailru' => array(
'client_id' => '670707',
'client_secret' => 'a619062972f2073ded61405b8f8eccd2',
'redirect_uri' => 'https:///auth/?provider=mailru'
),
'yandex' => array(
'client_id' => 'bff0bfcaef054ab66c0538b39e0a86cf',
'client_secret' => '219ba88d386b114b9c6abef7eab4e8e4',
'redirect_uri' => 'https:///auth/?provider=yandex'
),
'google' => array(
'client_id' => '393337311853.apps.googleusercontent.com',
'client_secret' => 'B38WaUlZG8gDI6jIEWVct5id',
'redirect_uri' => 'https:///auth?provider=google'
),
'facebook' => array(
'client_id' => '346158195993388',
'client_secret' => '2de1ab376d1c17cd47250920c05ab386',
'redirect_uri' => 'https:///auth?provider=facebook'
),
'twitter' => array(
'client_id' => 'ef054ab66c0538b39e0a865cf',
'client_secret' => '6d6c0538b39e0a86cf219ba88d386b114b9c6abef7eab4e8e4',
'redirect_uri' => 'https:///auth?provider=twitter'
),
);
// создание адаптеров
$adapters = array();
$responses = array();
foreach ($adapterConfigs as $adapter => $settings) {
$class = 'SocialAuther\Adapter\\' . ucfirst($adapter);
$adapters[$adapter] = new $class($settings);
$responses[$adapter] = $adapters[$adapter]->getResponseType();
}
if ( !isset($_GET['provider'])
|| !array_key_exists($_GET['provider'], $adapters)
|| !isset($_GET[$responses[$_GET['provider']]])
) {
foreach ($adapters as $title => $adapter) {
echo '<p><a href="' . $adapter->getAuthUrl() . '">Аутентификация через ' . ucfirst($title) . '</a></p>';
}
} else {
$auther = new SocialAuther\SocialAuther($adapters[$_GET['provider']]);
if ($auther->authenticate()) {
if (!is_null($auther->getSocialId()))
echo "Социальный ID пользователя: " . $auther->getSocialId() . '<br />';
if (!is_null($auther->getName()))
echo "Имя пользователя: " . $auther->getName() . '<br />';
if (!is_null($auther->getEmail()))
echo "Email пользователя: " . $auther->getEmail() . '<br />';
if (!is_null($auther->getSocialPage()))
echo "Ссылка на профиль пользователя: " . $auther->getSocialPage() . '<br />';
if (!is_null($auther->getSex()))
echo "Пол пользователя: " . $auther->getSex() . '<br />';
if (!is_null($auther->getBirthday()))
echo "День Рождения: " . $auther->getBirthday() . '<br />';
// аватар пользователя
if (!is_null($auther->getAvatar()))
echo '<img src="' . $auther->getAvatar() . '" />'; echo "<br />";
}
}