首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Codeigniter/i18n URL的OAuth问题

Codeigniter/i18n URL的OAuth问题
EN

Stack Overflow用户
提问于 2012-05-08 02:18:46
回答 1查看 789关注 0票数 2

我已经成功地通过我的CodeIngiter应用程序访问了LinkedIn应用程序接口。我移动到几乎相同的服务器上并实现了i18n库,但它停止了工作。

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

使用i18n library后,我的URL在第一部分有两个字母语言代码,如'en‘或'br’。

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

我认为这会导致$_REQUEST‘’oath_verifier‘的设置出现路由问题

这方面的任何帮助都是非常感谢的。

摘自控制器:

代码语言:javascript
复制
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']);
   }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-08 06:39:33

根据你的评论和帖子,我猜你正试图连续两次使用相同的方法,这样你就可以登录了。看起来很奇怪,但不管怎样。

然而,您使用的i18n将更改您的路由以包含语言,因此您应该更新您在to控制器中设置的url,以也使用该语言或一种语言。

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

您应该更改对urls的所有引用,如下所示:

代码语言:javascript
复制
$config['base_url']      = site_url("linklogin/initiate/");
$config['callback_url']  = site_url("linklogin/get_resume_linkedin/");

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

您还应该用redirect();替换header(...); exit;的使用。如果您在发送头部后死亡,codeigniter将不会完全运行,并且您的日志将不会完全完成。

代码语言:javascript
复制
redirect($config['callback_url']); // Replaces: header($config['callback_url']);exit;
redirect('linklogin/get_resume_linkedin/'); // Alternative to above statement

我还建议您查看manual,以查看内置会话类和输入类。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10487027

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档