我使用 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 支持中的特殊许可。 也重新生成密钥。 有什么问题吗&
添加卷曲
$curl = curl_init();
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_HEADER, TRUE);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLINFO_HEADER_OUT, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($curl);
curl_close($curl);
print_r($result);
1 种方式
url = https://api.twitter.com/1.1/account/verify_credentials.json?oauth_consumer_key=XXXXXXXX&oauth_nonce=XXXXXX&oauth_signature=XXXXX&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1509963372&oauth_token=XXXXXX&oauth_version=1.0&screen_name=ssds
结果 = HTTP/1.1 200 OK + 所有字段均不含电子邮件
2路
url = https://api.twitter.com/1.1/account/verify_credentials.json?oauth_consumer_key=XXXXXXXX&oauth_nonce=XXXXXX&oauth_signature=XXXXX&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1509963372&oauth_token=XXXXXX&oauth_version=1.0&screen_name=ssds&include_email=true
结果 = HTTP/1.1 401 需要授权 + {"errors":[{"code":32,"message":"无法验证您的身份。"}]}
2 种电子邮件方式不起作用。
我解决了这个问题并收到电子邮件!
这是最后一个网址的视图
define('ACCOUNT_EMAIL','https://api.twitter.com/1.1/account/verify_credentials.json');
curl_setopt($curl, CURLOPT_URL, ACCOUNT_EMAIL . '?include_email=true&screen_name='.$screen_name);
{METHOD}&{URL_WITHOUT_QUERY_PARAMS}&{OTHER_PARAMS}
创建签名时,GET 查询参数不能是
{URL_WITHOUT_QUERY_PARAMS}
的一部分,而是作为 {OTHER_PARAMS}
的一部分。请注意,{OTHER_PARAMS}
必须按字母顺序排序。
附录 A.5.1。生成签名基字符串
要生成签名,首先需要生成签名基字符串。该请求包含以下参数(不包括 oauth_signature),这些参数被排序并连接成规范化字符串:
oauth_consumer_key: dpf43f3p2l4k3l03 oauth_令牌: nnch734d00sl2jdk oauth_signature_method: HMAC-SHA1 oauth_时间戳: 1191242096 oauth_nonce: kllo9940pd9333jh oauth_版本: 1.0 文件: 假期.jpg 尺寸: 原来的 以下输入用于生成签名基字符串:
1.)
获取
2.)
http://photos.example.net/photos
3.) file=vacation.jpg&oauth_consumer_key=dpf43f3p2l4k3l03&oauth_nonce=kllo9940pd9333jh&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1191242096&oauth_token=nnch734d00sl2jdk&oauth _版本=1.0&大小=原始
签名基串是:
GET&http%3A%2F%2Fphotos.example.net%2Fphotos&file%3Dvacation.jpg%26oauth_consumer_key%3Ddpf43f3p2l4k3l03%26oauth_nonce%3Dkllo9940pd9333jh%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1191242096%26oauth_token%3Dnnch734d00sl2jdk%26oauth_version%3D1.0%26size%3Doriginal