Pho*_*own 5 php facebook codeigniter facebook-php-sdk
浏览Facebook API,我对正确的方法感到困惑.我希望用户跳过注册,或者如果他们使用Facebook登录则自动注册.因此,如果他们登录Facebook,我会收集他们的ID,电子邮件并在我的用户表中创建一条记录.
如果用户表中已存在id,则跳过自动注册并直接转到成员页面.这是我的代码到目前为止(摘自Facebook的PHP SDK示例).当我运行注册脚本时,页面显示为空白,我不会被重定向.
编辑:似乎在要求之后失败,如果我使用以下代码'test'永远不会被打印.
编辑:我正在使用Codeigniter,这个脚本是控制器的一部分,会导致问题的问题吗?
require 'http://localhost/facebook-php-sdk-6c82b3f/src/facebook.php';
echo "test";
Run Code Online (Sandbox Code Playgroud)
-
public function signup()
{
require 'http://localhost/facebook-php-sdk-6c82b3f/src/facebook.php';
// Create our Application instance (replace this with your appId and secret).
$facebook = new Facebook(array(
'appId' => 'xxxxxxxxxxxxxxx',
'secret' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxx',
));
// Get User ID
$user = $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.
if ($user)
{
try
{
// Proceed knowing you have a logged in user who's authenticated.
$user_profile = $facebook->api('/me');
}
catch (FacebookApiException $e)
{
error_log($e);
$user = null;
}
}
// Login or logout url will be needed depending on current user state.
if ($user)
{
$logoutUrl = $facebook->getLogoutUrl();
}
else
{
$loginUrl = $facebook->getLoginUrl(array('scope' => 'email'));
redirect($loginUrl);
}
print_r($user_profile);
$this->load->model("user_model");
$privileges = 1;
$loginLocation = ip2long($_SERVER['REMOTE_ADDR']);
$active = 1;
$this->user_model->add_user($user_profile->id, $user_profile->name, $user_profile->email, $loginLocation, $privileges, $active);
}
Run Code Online (Sandbox Code Playgroud)
ifa*_*our 12
我建议你阅读框架文档.向CodeIgniter添加库不是一项艰巨的任务.Facebook库也不例外.
这是我刚刚提出的快速集成:
1.创建配置文件:application/config/facebook.php
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
$config['appId'] = 'app_id';
$config['secret'] = 'app_secret';
Run Code Online (Sandbox Code Playgroud)
2.将sdk文件放在libraries文件夹中application/libraries/,并将facebook.php文件重命名为Facebook.php,并将php标记替换为:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
Run Code Online (Sandbox Code Playgroud)
3.在您的控制器中加载配置文件,然后加载Facebook库:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Welcome extends CI_Controller {
public function __construct()
{
parent::__construct();
// Your own constructor code
$CI = & get_instance();
$CI->config->load("facebook",TRUE);
$config = $CI->config->item('facebook');
$this->load->library('facebook', $config);
}
public function index()
{
$user = $this->facebook->getUser();
if($user) {
try {
$user_info = $this->facebook->api('/me');
echo '<pre>'.htmlspecialchars(print_r($user_info, true)).'</pre>';
} catch(FacebookApiException $e) {
echo '<pre>'.htmlspecialchars(print_r($e, true)).'</pre>';
$user = null;
}
} else {
echo "<a href=\"{$this->facebook->getLoginUrl()}\">Login using Facebook</a>";
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在在构造函数方法中,您刚刚初始化了Facebook库(sdk),可以使用以下方法访问它:$this->facebook.
笔记:
| 归档时间: |
|
| 查看次数: |
9849 次 |
| 最近记录: |