我通過我的CodeIngiter應用程序成功訪問LinkedIn API。我搬到了幾乎相同的服務器,並實現了i18n庫,它停止工作。Codeigniter/i18n URL的OAuth問題
用戶在LinkedIn上進行身份驗證後,它會返回到正確的URL,但會產生與Undefined index: oauth_verifier
開始了一系列的錯誤使用i18n library我的網址後,現在已經在第1段的兩個字母的語言代碼,如「恩」或'br'。
編輯:這是我使用的Linkedin library。
我相信這是造成路由問題與_REQUEST $ [「oath_verifier」]
任何幫助是極大的讚賞設置。從控制器
摘錄:
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']);
}
那麼,從它的外觀來看,這是因爲'oath_verifier'沒有在會話中設置,如果您在沒有設置$ _REQUEST ['oath_verifier']'的情況下執行了兩個請求,可能會發生這種情況。或者直接去控制器而不要求'oath_verifier'。你爲什麼要檢查它是否在'$ _REQUEST'中?我在codeigniter中從來沒有這樣做過。 – Zombaya
這段摘錄究竟來自哪裏?在一個方法內或在構造函數內? – Zombaya
明白了。摘錄來自我創建的CodeIgniter中的控制器,該控制器處理與正在使用的LinkedIn庫(不是我的)的所有交互。如果我發佈其他內容,會有幫助嗎?這個代碼之前都有效 - 我幾乎可以肯定,i18n庫正在影響URL解析導致問題的方式,只是沒有看到如何影響會話。 – jsuissa