【发布时间】:2018-04-18 08:50:33
【问题描述】:
我将 Php 用于 twitter 自动化 (OAuth)。无法获得用户电子邮件回复。
define('ACCOUNT_EMAIL','https://api.twitter.com/1.1/account/verify_credentials.json');
$oauth_nonce = md5(uniqid(rand(), true));
$oauth_timestamp = time();
$oauth_token = $response['oauth_token'];
$oauth_token_secret = $response['oauth_token_secret'];
$screen_name = $response['screen_name'];
//create oauth signature
$params = array(
'oauth_consumer_key=' . CONSUMER_KEY . URL_SEPARATOR,
'oauth_nonce=' . $oauth_nonce . URL_SEPARATOR,
'oauth_signature_method=HMAC-SHA1' . URL_SEPARATOR,
'oauth_timestamp=' . $oauth_timestamp . URL_SEPARATOR,
'oauth_token=' . $oauth_token . URL_SEPARATOR,
'oauth_version=1.0' . URL_SEPARATOR,
'screen_name=' . $screen_name,
//'include_email=true'
);
$oauth_base_text = 'GET' . URL_SEPARATOR . urlencode(ACCOUNT_EMAIL) . URL_SEPARATOR . implode('', array_map('urlencode', $params));
$key = CONSUMER_SECRET . '&' . $oauth_token_secret;
$signature = base64_encode(hash_hmac("sha1", $oauth_base_text, $key, true));
// get userinfo
$params = array(
'oauth_consumer_key=' . CONSUMER_KEY,
'oauth_nonce=' . $oauth_nonce,
'oauth_signature=' . urlencode($signature),
'oauth_signature_method=HMAC-SHA1',
'oauth_timestamp=' . $oauth_timestamp,
'oauth_token=' . urlencode($oauth_token),
'oauth_version=1.0',
'screen_name=' . $screen_name,
//'include_email=true'
);
$url = ACCOUNT_EMAIL . '?' . implode(URL_SEPARATOR, $params);
$response = file_get_contents($url);
print_r($response);
当 **include_email=true 打开时 - 我什么也得不到。 当 include_email=true 被阻止时 - 我得到所有用户信息(没有电子邮件)。**
在我的管理员配置文件中,我设置了 向用户请求电子邮件地址 并发送信息以获得 twitter 支持的特殊权限。 也重新生成密钥。 有什么问题&
【问题讨论】:
-
file_get_contents 将丢弃响应正文(如果您可能会发现人类可读的错误消息),以防 HTTP 状态代码指示错误。去研究如何避免这种情况(涉及在流上下文中传递),或者使用其他东西来发出请求(例如 cURL),这样在发生错误时不会自动保留响应正文。