WindowsローカルサーバでのEvernoteAPIのOAuth認証
EvernoteAPIのOAuth認証でちょっとハマッたので覚書。
事象
以下のシンプルなOAuthコードを実行
$sandbox = true; $oauth_handler = new \Evernote\Auth\OauthHandler($sandbox); $key = 'xxx'; $secret = 'xxx'; $callback = 'localhost:8080/api/index.php'; $oauth_data = $oauth_handler->authorize($key, $secret, $callback);
以下のようなエラー画面。
URLのoauth_tokenパラメタが空になっている。
直接の原因
EvernoteAPIのOauthHandler.phpのcurl_exec
がSSL certificate problemで失敗しているため。
//中略 protected function getTemporaryCredentials() { curl_setopt_array($handle, array( CURLOPT_POST => true, CURLOPT_URL => $this->getBaseUrl('oauth'), CURLOPT_HTTPHEADER => $this->formatHeaders($headers), CURLOPT_POSTFIELDS => http_build_query($arguments, '', '&'), CURLOPT_HEADER => true, CURLOPT_RETURNTRANSFER => true )); $raw = curl_exec($handle); //←ここで戻り値が空。curl_errorでエラー内容を確認したところ、SSL certificate problemが発生している
ためしに、
CURLOPT_SSL_VERIFYPEER=>false
をパラメタに追加すると問題なく動いた。