2

CodeIngiter アプリケーションを介して LinkedIn API に正常にアクセスしています。ほぼ同じサーバーに移動し、i18n ライブラリを実装しましたが、動作しなくなりました。

ユーザーが LinkedIn で認証された後、正しい URL に戻りますが、次のような一連のエラーが生成されます。Undefined index: oauth_verifier

i18n ライブラリを使用した後、URL の最初のセグメントに「en」や「br」などの 2 文字の言語コードが含まれるようになりました。

編集: これは私が使用しているLinkedin ライブラリです。

これが $_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']);
   }
4

1 に答える 1

3

コメントと投稿に基づいて、同じ方法を2回続けて使用しようとしていると推測しているため、ログインします。奇妙に思えますが、何でも構いません。

ただし、使用する i18n はルートを変更して言語を組み込むため、 to コントローラー内で設定している URL を更新して、その言語または言語も使用する必要があります。

codeigniter では、常に を使用して URL を設定するようにしてくださいsite_url()。このようにして、アプリケーションを他のドメイン名/場所に簡単に移植できます。この場合、localisation-library によって URL も変更されます。

次のように、URL へのすべての参照を変更する必要があります。

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

を使用するには、 URL Helpersite_url()が必要です。site_url() を使用する前に、そのヘルパーを含める必要があります。ただし、コンストラクターには既に含まれているため、問題はありません。

の使用も に置き換える必要がありheader(...); exit;ますredirect();。ヘッダーを送信した後に死亡した場合、codeigniter は完全には実行されず、ログは完全には完了しません。

redirect($config['callback_url']); // Replaces: header($config['callback_url']);exit;
redirect('linklogin/get_resume_linkedin/'); // Alternative to above statement

また、組み込みのセッション クラスと入力クラスについては、マニュアルを参照することをお勧めします。

于 2012-05-07T22:39:33.477 に答える