facebook身份验证后无法打开重定向页面
我正在使用codeigniter下的facebook connect。身份验证后,我想重定向控制器的成功方法 这是我的控制器:facebook身份验证后无法打开重定向页面,facebook,codeigniter,facebook-graph-api,session-state,Facebook,Codeigniter,Facebook Graph Api,Session State,我正在使用codeigniter下的facebook connect。身份验证后,我想重定向控制器的成功方法 这是我的控制器: class Welcome extends CI_Controller { function __construct() { parent::__construct(); $this->load->model('Facebook_model'); } function index() { $fb_data = $this->
class Welcome extends CI_Controller {
function __construct()
{
parent::__construct();
$this->load->model('Facebook_model');
}
function index()
{
$fb_data = $this->session->userdata('fb_data');
$data = array(
'fb_data' => $fb_data,
);
$this->load->view('welcome', $data);
}
function topsecret()
{
$fb_data = $this->session->userdata('fb_data');
if((!$fb_data['uid']) or (!$fb_data['me']))
{
redirect('welcome');
}
else
{
$data = array(
'fb_data' => $fb_data,
);
$this->load->view('topsecret', $data);
}
}
function success()
{
$this->load->view('welcome_message');
}
}
我的facebook api访问模型:
class Facebook_model extends CI_Model {
public function __construct()
{
parent::__construct();
$config = array(
'appId' => '261066574000678',
'secret' => ' 79e11f65449988965362f58e9a4aabd7',
'fileUpload' => true, // Indicates if the CURL based @ syntax for file uploads is enabled.
);
$this->load->library('Facebook', $config);
$user = $this->facebook->getUser();
// We may or may not have this data based on whether the user is logged in.
//
// If we have a $user id here, it means we know the user is logged into
// Facebook, but we don't know if the access token is valid. An access
// token is invalid if the user logged out of Facebook.
$profile = null;
if($user)
{
try {
// Proceed knowing you have a logged in user who's authenticated.
$profile = $this->facebook->api('/me?fields=id,name,link,email');
} catch (FacebookApiException $e) {
error_log($e);
$user = null;
}
}
$fb_data = array(
'me' => $profile,
'uid' => $user,
'loginUrl' => $this->facebook->getLoginUrl(
array(
'scope' => 'email,user_birthday,publish_stream', // app permissions
'redirect_uri' => 'https://sanjay.localhost.com/index.php/welcome/success' // URL where you want to redirect your users after a successful login
)
),
'logoutUrl' => $this->facebook->getLogoutUrl(),
);
$this->session->set_userdata('fb_data', $fb_data);
}
}
由于我正在本地主机上测试这一点,我还编辑了我的主机文件,并将我的本地主机名更改为sanjay.localhost.com。重定向发生但未发生。我想可能是因为querystring。当重定向发生时,重定向uri为=">https://sanjay.localhost.com/index.php/welcome/success?state=ff5712299510defa&code=AQCaD-FAd1shuW#=
我不理解如何处理查询字符串内部的状态和代码。
请帮助。感谢您在我的博客上与我联系。首先,Facebook已停止本地主机支持。她的链接 我还没有使用codeigniter开发任何应用程序,我使用CakePHP,但auth follow应该是相同的。
1.在用户控制器中创建fb_登录功能。
2.此功能将遵循此逻辑。 a、 使用
$facebook->getUser()
获取用户id。
b、 然后使用$facebook->api('/me')
确定。3.如果您获得FacebookApiException,则发送用户登录Facebook。如果您使用官方SDK,则当前url将添加到重定向url。
4.登录后,Facebook将重定向您的用户。因此,您将使用
$Facebook->getUser()
获取数据。将此数据保存在会话中,以便在应用程序中进一步使用。然后将用户重定向到您的控制页面或任何其他页面。CakePHP具有setFlash()
函数,用于显示视图中控制面板中设置的消息。我认为Codeignator应该有类似的功能。如果没有,您只需在会话中设置消息并重定向用户。然后在显示消息后取消设置消息
这是完整的代码
$uid=$facebook->getUser();
试一试{
$user_profile=$facebook->api('/me');
}catch(facebookapi异常$e){
//echo$e->getMessage();
$uid=null;
}
$loginUrl=$facebook->getLoginUrl(
排列(
“范围”=>“发布流、脱机访问、电子邮件”
),''
);
如果(!$uid){
echo“top.location.href='$loginUrl';”;
出口
}
//使用用户表上的uid进行搜索,以检查使用是returnign user还是new user。
如果($new_user==1)
{
$this->Session->setFlash(“请注册”);
//重定向到注册
}
其他的
{
$this->Session->setFlash(“你是个好孩子”);
//重新检测到控制面板
}
感谢您在我的博客上与我联系。首先,Facebook停止了对localhost的支持。她的链接
我还没有使用codeigniter开发任何应用程序,我使用CakePHP,但auth follow应该是相同的。1.在用户控制器中创建fb_登录功能。
2.此功能将遵循此逻辑。 a、 使用
$facebook->getUser()
获取用户id。
b、 然后使用$facebook->api('/me')
确定。3.如果您获得FacebookApiException,则发送用户登录Facebook。如果您使用官方SDK,则当前url将添加到重定向url。
4.登录后,Facebook将重定向您的用户。因此,您将使用
$Facebook->getUser()
获取数据。将此数据保存在会话中,以便在应用程序中进一步使用。然后将用户重定向到您的控制页面或任何其他页面。CakePHP具有setFlash()
函数,用于显示视图中控制面板中设置的消息。我认为Codeignator应该有类似的功能。如果没有,您只需在会话中设置消息并重定向用户。然后在显示消息后取消设置消息
这是完整的代码
$uid=$facebook->getUser();
试一试{
$user_profile=$facebook->api('/me');
}catch(facebookapi异常$e){
//echo$e->getMessage();
$uid=null;
}
$loginUrl=$facebook->getLoginUrl(
排列(
“范围”=>“发布流、脱机访问、电子邮件”
),''
);
如果(!$uid){
echo“top.location.href='$loginUrl';”;
出口
}
//使用用户表上的uid进行搜索,以检查使用是returnign user还是new user。
如果($new_user==1)
{
$this->Session->setFlash(“请注册”);
//重定向到注册
}
其他的
{
$this->Session->setFlash(“你是个好孩子”);
//重新检测到控制面板
}
它是否重定向回欢迎/成功?在使用facebook进行身份验证后,发生了什么?它是否显示任何错误?@Gavin重定向,但它表示此网页不可用,浏览器地址如下:dnt不知道如何处理此查询字符串查看config.ph中的uri\u协议设置p
文件。尝试将其设置为每个可用值(有关可用选项,请参阅上面的注释),然后转到失败的URL。我对所有网站都使用CodeIgniter,并且在混合用户友好URL和包含查询字符串值的URL时从未遇到过问题(即通过查询字符串返回值的paypal支付)因此,这只是一个找出有效方法的问题;@Gavin ya但如何处理此查询字符串值(状态和代码)。如何在我的成功方法中处理。请让我知道。我对此不熟悉。:(我按你说的那样尝试了。仍然不起作用:(它是否重定向回欢迎/成功?在使用facebook进行身份验证后,发生了什么?它是否显示任何错误?@Gavin重定向发生,但它表示此网页不可用,浏览器地址如下:dnt不知道如何处理此查询字符串查看config.php
文件中的uri\u协议设置。请尝试将其设置为每个可用值(有关可用选项,请参阅上面的注释),然后转到失败的URL。我在所有网站上都使用CodeIgniter,并且在混合用户友好URL和包含查询字符串值的URL(即通过查询字符串返回值的paypal支付)时从未遇到过问题所以只是
$uid = $facebook->getUser();
try {
$user_profile = $facebook->api('/me');
} catch (FacebookApiException $e) {
//echo $e->getMessage();
$uid = null;
}
$loginUrl = $facebook->getLoginUrl(
array(
'scope' => 'publish_stream,offline_access,email'
),''
);
if (!$uid) {
echo "<script type='text/javascript'>top.location.href = '$loginUrl';</script>";
exit;
}
//search using uid on your user table to check if the use is returnign user or new user.
if($new_user ==1)
{
$this->Session->setFlash('please sign up');
//redirect to sign up
}
else
{
$this->Session->setFlash('you are good lad');
//reditect to control panel
}