Codeigniter Hybridigniter Auth库和社交插件
我已经集成了codeigniter混合身份验证库用于社交登录。我已经为facebook、google和twitter创建了开发者密钥。当我尝试使用这些api登录时,我遇到了一个错误。我正在本地主机上运行我的应用程序。将url重定向到localhost时是否存在问题 Facebook身份验证: 用户已取消身份验证或提供程序拒绝连接 谷歌认证: 错误:重定向\u uri\u不匹配 Twitter身份验证: 用户已取消身份验证或提供程序拒绝连接 ControllerAuth:Codeigniter Hybridigniter Auth库和社交插件,codeigniter,authentication,hybridauth,Codeigniter,Authentication,Hybridauth,我已经集成了codeigniter混合身份验证库用于社交登录。我已经为facebook、google和twitter创建了开发者密钥。当我尝试使用这些api登录时,我遇到了一个错误。我正在本地主机上运行我的应用程序。将url重定向到localhost时是否存在问题 Facebook身份验证: 用户已取消身份验证或提供程序拒绝连接 谷歌认证: 错误:重定向\u uri\u不匹配 Twitter身份验证: 用户已取消身份验证或提供程序拒绝连接 ControllerAuth: Facebook的错误发
Facebook的错误发生在我身上。我的应用已经被授权,但Facebook在授权后没有正确重定向。转到Facebook>设置>应用程序,检查您的应用程序是否属于授权应用程序。如果是这样,请删除它并重试。您可能会在本地主机上运行Facebook和其他第三方身份验证时遇到问题,原因可能不同。您可以尝试的一个可能的解决方案是设置一个虚拟域来访问您的CI网站。给出了在WAMP上设置虚拟主机的非常清晰的说明。然后做相应的Facebook应用程序设置 您可能必须检查本地主机上的相关端口是否打开,否则在接收回身份验证时可能会遇到问题
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class HAuth extends CI_Controller {
public function index()
{
$this->load->view('hauth/home');
}
public function login($provider)
{
log_message('debug', "controllers.HAuth.login($provider) called");
try
{
log_message('debug', 'controllers.HAuth.login: loading HybridAuthLib');
$this->load->library('HybridAuthLib');
if ($this->hybridauthlib->providerEnabled($provider))
{
log_message('debug', "controllers.HAuth.login: service $provider enabled, trying to authenticate.");
$service = $this->hybridauthlib->authenticate($provider);
if ($service->isUserConnected())
{
log_message('debug', 'controller.HAuth.login: user authenticated.');
$user_profile = $service->getUserProfile();
log_message('info', 'controllers.HAuth.login: user profile:'.PHP_EOL.print_r($user_profile, TRUE));
$data['user_profile'] = $user_profile;
$this->load->view('hauth/done',$data);
}
else // Cannot authenticate user
{
show_error('Cannot authenticate user');
}
}
else // This service is not enabled.
{
log_message('error', 'controllers.HAuth.login: This provider is not enabled ('.$provider.')');
show_404($_SERVER['REQUEST_URI']);
}
}
catch(Exception $e)
{
$error = 'Unexpected error';
switch($e->getCode())
{
case 0 : $error = 'Unspecified error.'; break;
case 1 : $error = 'Hybriauth configuration error.'; break;
case 2 : $error = 'Provider not properly configured.'; break;
case 3 : $error = 'Unknown or disabled provider.'; break;
case 4 : $error = 'Missing provider application credentials.'; break;
case 5 : log_message('debug', 'controllers.HAuth.login: Authentification failed. The user has canceled the authentication or the provider refused the connection.');
//redirect();
if (isset($service))
{
log_message('debug', 'controllers.HAuth.login: logging out from service.');
$service->logout();
}
show_error('User has cancelled the authentication or the provider refused the connection.');
break;
case 6 : $error = 'User profile request failed. Most likely the user is not connected to the provider and he should to authenticate again.';
break;
case 7 : $error = 'User not connected to the provider.';
break;
}
if (isset($service))
{
$service->logout();
}
log_message('error', 'controllers.HAuth.login: '.$error);
show_error('Error authenticating user.');
}
}
public function endpoint()
{
log_message('debug', 'controllers.HAuth.endpoint called.');
log_message('info', 'controllers.HAuth.endpoint: $_REQUEST: '.print_r($_REQUEST, TRUE));
if ($_SERVER['REQUEST_METHOD'] === 'GET')
{
log_message('debug', 'controllers.HAuth.endpoint: the request method is GET, copying REQUEST array into GET array.');
$_GET = $_REQUEST;
}
log_message('debug', 'controllers.HAuth.endpoint: loading the original HybridAuth endpoint script.');
require_once APPPATH.'/third_party/hybridauth/index.php';
}
}
/* End of file hauth.php */
/* Location: ./application/controllers/hauth.php */