読者です 読者をやめる 読者になる 読者になる

twitterAPIを使うときにはサーバの時刻設定に注意したほうがいいです

こんばんは。
twitter apiを使って、Webアプリを作ろうとしていたのですが、ちょっとつまづきました、、
access_tokenが取得されず困ってました。

原因はサーバの時刻設定がズレ過ぎていたことが原因でアクセストークンを取得出来ませんでした。

Array
(
[Failed to validate oauth signature and token] =>
)

こんな感じでエラーが出てました。


それで幸運にも同じような事例が過去にありました。過去の人、ありがとうございます
Failed to validate oauth signature and token | Twitter Developers

それで、今回はNTPサーバをたてて対応しました。仮想環境のCentOS6.3に対してです。

# yum -y install ntp
# vi /etc/ntp.conf
#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap ← 追加(内部からの時刻同期を許可)

# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
server 0.rhel.pool.ntp.org
server 1.rhel.pool.ntp.org
server 2.rhel.pool.ntp.org
↓ 時刻同期先NTPサーバーを変更
server ntp.nict.jp # 日本標準時を提供しているNTPサーバー(stratum 1)
server ntp.jst.mfeed.ad.jp # 上記サーバーと直接同期しているNTPサーバー(stratum 2)
# ntpdate ntp.nict.jp ← 手動で時刻を合わせる
# /etc/rc.d/init.d/ntpd start  ←ntpサーバ起動
# chkconfig ntpd on   ←自動起動設定


こんなかんじでいけました!
今回は以下のサイトを参考にさせて頂きました。ありがとうございました。
NTPサーバー構築(ntpd) - CentOSで自宅サーバー構築
Failed to validate oauth signature and token | Twitter Developers

以下、追記です。

って書いてましたが、うまくntpサーバが時刻同期をうまく行かなかったので、今までは手動でやっていました。

$ sudo ntpdate ntp.nict.jp

こんなかんじです
ですが、さすがに毎回プログラミングするたびにやるのはめんどいので、別の方法をとることにしました。
vmware-toolsをインストールして、それのコマンドを使えば、できるようです。
ちなみにインストールは以下のサイトを参考にしました。
CentOS6.2にVMware Toolsをインストールする | mawatari.jp

それから、

$ vmware-toolbox-cmd timesync status
Enabled  #Enabledならおk、Disabaledの場合は以下のコマンドも実行する

$ vmware-toolbox-cmd timesync enable 
$ vmware-toolbox-cmd timesync status #これでおkです。
Enabled  #Enabledならおk

こんな感じです。
コマンド実行部分は以下のサイトを参考にしました。
VMwareToolsの時刻同期はどのように動作確認・有効にすれば良いですか | ニフティクラウド