2013-05-28 79 views
1

看來,Twitter的API 1.1我的用戶密鑰不被解密,在我的CodeIgniter控制器上我的Amazon EC2實例(slightly similar to this question)因爲無法解密/解碼關鍵

  • 我在排除
  • 得到一個 unable to authenticate you錯誤
  • 和我的print_r($settings)聲明(請參閱下文)在瀏覽器中顯示消費者祕密的不可代表字符,儘管我使用此行'consumer_secret' => $this->encrypt->decode($this->config->item('consumer_secret')解密了該消息。

my_controller.php

$settings = array(
      'oauth_access_token' => $this->config->item('oauth_access_token'), 
      'oauth_access_token_secret' => $this->config->item('oauth_access_token_secret'), 
      'consumer_key' => $this->config->item('consumer_key'), 
      'consumer_secret' => $this->encrypt->decode($this->config->item('consumer_secret')) 
     ); 
     print_r($settings); 

注:我保存在CodeIgniter的配置目錄加密消費者的密鑰,也可以設置在config.php我的加密密鑰。有趣的是,它在WAMP中運行良好,但在亞馬遜EC2中運行良好。

如何解決此問題?我應該只將未加密的用戶密鑰保存在配置文件中嗎?

回答

2

Codeigniter使用一些標準加密庫,如果它們不可用,則退回。我不認爲mcrypt在默認的Amazon Linux AMI上可用。您可以

a)使用後備;剛剛重新加密EC2上的CONSUMER_SECRET,並把它在配置

b)安裝的mcrypt

$ sudo yum install php-mcrypt 
$ sudo service httpd restart 
+0

+1感謝您的回覆stormdrain。重新加密?哦,因爲我實際上只是將加密的字符串保存在配置文件中。我從來沒有明確加密過它。 – Anthony

+1

它是如何被加密的?我印象中是通過$ this-> encrypt-> encode('consumer_secret_string123123123')加密它的,並將結果存儲在配置文件中。如果是這樣的話,當你在WAMP上創建加密的用戶密碼時,可能使用默認的ec2 micro上不可用的mcrypt,這意味着它不能正確解密。 – stormdrain

+0

Stormdrain,你很棒!我安裝了mcrypt並重新啓動了httpd,現在我再次看到我的密鑰,非常感謝!我是如何加密密鑰的?我剛做了一個echo加密 - >編碼('my_key');並從我的瀏覽器中複製了代碼,我知道,非常低調,但我的學習速度緩慢但很狡猾。再次感謝! – Anthony