gpt4 book ai didi

php - Codeigniter/i18n URL 的 OAuth 问题

转载 作者:行者123 更新时间:2023-12-04 05:47:35 25 4
gpt4 key购买 nike

我已经通过我的 CodeIngiter 应用程序成功访问了 LinkedIn API。我搬到了一个几乎相同的服务器并实现了 i18n 库,但它已停止工作。

用户在 LinkedIn 上进行身份验证后,它返回到正确的 URL,但会生成一系列以 Undefined index: oauth_verifier 开头的错误。

使用后 i18n library我的 URL 现在在第一段中有两个字母语言代码,如“en”或“br”。

编辑:这是 Linkedin library我正在使用。

我相信这会导致 $_REQUEST['oath_verifier'] 的设置出现路由问题

非常感谢您对此的任何帮助。

摘自 Controller :

class LinkLogin extends MY_Controller {

function __construct(){

parent::__construct();
$this->load->helper('url');
$this->load->model('profile_model');
$this->load->model('generic_model');
include_once (APPPATH.'libraries/Linkedin.php');
}

function index(){
}

function initiate(){

session_start();
$this->load->helper('url');

$config['linkedin_access'] = "***";
$config['linkedin_secret'] = "***";
$config['base_url'] = "http://www.youinapage.com/linklogin/initiate/";

if ($this->uri->segment(4) == 'profile') {
$config['callback_url'] = "http://www.youinapage.com/linklogin/get_profile_linkedin/";
}
if ($this->uri->segment(4) == 'resume') {
$config['callback_url'] = "http://www.youinapage.com/linklogin/get_resume_linkedin/";
}

function get_resume_linkedin() {

session_start();
$this->load->library('format');

$config['linkedin_access'] = "***";
$config['linkedin_secret'] = "***";
$config['base_url'] = "http://www.youinapage.com/linklogin/initiate/";
$config['callback_url'] = "http://www.youinapage.com/linklogin/get_resume_linkedin/";

# First step is to initialize with your consumer key and secret. We'll use an out-of-band oauth_callback
$linkedin = new LinkedIn($config['linkedin_access'], $config['linkedin_secret'], $config['callback_url'] );
//$linkedin->debug = true;


# First step is to initialize with your consumer key and secret. We'll use an out-of-band oauth_callback
$linkedin = new LinkedIn($config['linkedin_access'], $config['linkedin_secret'], $config['callback_url'] );
//$linkedin->debug = true;

if (isset($_REQUEST['oauth_verifier'])){
$_SESSION['oauth_verifier'] = $_REQUEST['oauth_verifier'];

$linkedin->request_token = unserialize($_SESSION['requestToken']);
$linkedin->oauth_verifier = $_SESSION['oauth_verifier'];
$linkedin->getAccessToken($_REQUEST['oauth_verifier']);

$_SESSION['oauth_access_token'] = serialize($linkedin->access_token);
header("Location: " . $config['callback_url']);
exit;
}
else{
$linkedin->request_token = unserialize($_SESSION['requestToken']);
$linkedin->oauth_verifier = $_SESSION['oauth_verifier']; // ERROR: Undefined index: oauth_verifier
$linkedin->access_token = unserialize($_SESSION['oauth_access_token']);
}

最佳答案

根据您的评论和帖子,我猜您正在尝试连续两次使用相同的方法,因此您登录了。看起来很奇怪,但无论如何。

但是,您使用的 i18n 会更改您的路由以合并语言,因此您应该更新您在 Controller 中设置的 url,以也使用该语言或语言。

在 codeigniter 中,您应该始终尝试使用 site_url() 来设置 url。 .通过这种方式,您可以轻松地将您的应用程序移植到其他域名/位置。在这种情况下,本地化库也会为您更改 url。

您应该按如下方式更改对 url 的所有引用:

$config['base_url']      = site_url("linklogin/initiate/");
$config['callback_url'] = site_url("linklogin/get_resume_linkedin/");

使用 site_url() ,您将需要 URL Helper .在尝试使用 site_url() 之前,您应该包含该助手。但是你已经将它包含在你的构造函数中,所以没有问题。

您还应该替换使用 header(...); exit;redirect(); .如果您在发送 header 后死亡,则 codeigniter 将不会完全运行,您的日志也不会完全完成。
redirect($config['callback_url']); // Replaces: header($config['callback_url']);exit;
redirect('linklogin/get_resume_linkedin/'); // Alternative to above statement

我还建议您查看 manual检查内置 session 类和输入类。

关于php - Codeigniter/i18n URL 的 OAuth 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10487027/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com