我正在尝试使用eventful api(http://api.eventful.com/docs/auth)的request_token方法对用户进行身份验证。这是我的代码。
$tmhOAuth = new tmhOAuth( array('use_ssl' => false, 'method' => 'POST') );
$tmhOAuth->reconfigure(array('user_agent' => 'Eventful_PHP_API'));
$code = $tmhOAuth->request('POST', 'http://eventful.com/oauth/request_token',
array(
'app_key' => 'app_key','oauth_callback' => 'http://example.com/callback',
'oauth_consumer_key' => 'consumer_key',
'oauth_consumer_secret' => 'consumer_secret',
),true);
if($code == 200 ){
// success
}else{
// error
}
但我在$ code中遇到404错误。什么可能是错的
答案 0 :(得分:2)
您必须在POST
请求中添加其他参数。
如Eventful API Docs中所述:
- 所有oAuth请求必须使用HMAC-SHA1签名进行签名。 //看起来你没有这样做
- 所有oAuth请求必须包含时间戳和nonce参数。 //你还没有这样做
- 如果在请求数据时获得404,则可能是在需要POST时发出GET请求,不发送正确的参数,或者没有使用正确的参数计算签名。如果您遇到问题,请在此表单中输入所有相关参数,并查看其计算的签名。将它与您实际发送的签名进行比较。重新登记以输入您的app_key和您发送到参数行的任何其他参数,并将HTTP方法设置为正确的值。对于初始请求令牌,令牌和token_secret为空。
他们提供的示例包括几个您未包含的查询字符串参数,例如oauth_consumer_key
,oauth_nonce
,oauth_signature
,oauth_signature_method
,oauth_timestamp
和oauth_version
。
他们的例子:
http%3A%2F%2Fexample.com%2Fcallback&oauth_consumer_key=bafe29a8e561b3d15803&oauth_nonce=1cdb7f498ba9811513f2&oauth_signature=8EfteAvDBuE8MTVBABg2WhXnzY0%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1336765460&oauth_version=1.0 HTTP/1.1
答案 1 :(得分:0)
确定。经过一天的研究,我找到了答案。这是修改后的代码。
$tmhOAuth = new tmhOAuth(array(
'application_key' => 'my_app_key',
'consumer_key' => 'my_consumer_key',
'consumer_secret' => 'my_consumer_secret'
));
$code = $tmhOAuth->request('POST', 'http://eventful.com/oauth/request_token',
array(
'oauth_callback' => "http://example.com/callback"
));
if($code == 200 ){
// success
}else{
// error
}
特别感谢“tekin' (https://github.com/tekin)他的红宝石多事api提供指导(https://github.com/tekin/eventful_api)