微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从 twitter 获取用户电子邮件以进行身份​​验证 (https://api.twitter.com/1.1/account/verify_credentials.json)

如何解决从 twitter 获取用户电子邮件以进行身份​​验证 (https://api.twitter.com/1.1/account/verify_credentials.json)

我遵循了 twitter 上的教程(文档),但在最后一个阶段卡住了,当时我需要通过他的邮件获取用户数据(以进行用户授权)。

在不带参数的情况下进行请求时,获取用户名用户ID等数据,需要获取用户邮件,但是添加参数“?include_email = true”时却报错32 “我们无法验证您的身份”。

我不明白我在哪里犯了错误(正如我在签名中所理解的)

感谢关注 (抱歉我的英语,这不是我的母语)

    $oauthParams = [
        "oauth_consumer_key" => "...","oauth_token" => $requestOauthToken,"oauth_signature_method" => "HMAC-SHA1","oauth_timestamp" => time(),"oauth_nonce" => md5(uniqid()),"oauth_version" => "1.0",];

    $baseURI = "https://api.twitter.com/1.1/account/verify_credentials.json?include_email=true";
    $baseString = $this->buildBaseStringGET($baseURI,$oauthParams);

    $consumerSecret = '...';
    $compositeKey = $this->getCompositeKey($consumerSecret,$requestOauthTokenSecret);
    $oauthParams['oauth_signature'] = base64_encode(hash_hmac('sha1',$baseString,$compositeKey,true));

    $header = $this->buildAuthorizationHeader($oauthParams);

    $curl = curl_init();
    curl_setopt_array($curl,array(
        CURLOPT_URL => $baseURI,CURLOPT_RETURNTRANSFER => true,CURLOPT_ENCODING => '',CURLOPT_MAXREDirs => 10,CURLOPT_TIMEOUT => 0,CURLOPT_FOLLOWLOCATION => true,CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,CURLOPT_CUSTomrEQUEST => 'GET',CURLOPT_HTTPHEADER => array(
            $header,),));
    $response = curl_exec($curl);
    curl_close($curl);
    $response = json_decode($response,true)

private function buildBaseStringGET($baseURI,$oauthParams)
{
    $baseStringParts = [];
    ksort($oauthParams);
    foreach ($oauthParams as $key => $value) {
        $baseStringParts[] = "$key=" . urlencode($value);
    }
    return 'GET&' . urlencode($baseURI) . '&' . urlencode(implode('&',$baseStringParts));
}

private function buildAuthorizationHeader($oauthParams)
{
    $authHeader = 'Authorization: OAuth ';
    $values = [];
    foreach ($oauthParams as $key => $value) {
        $values[] = "$key=\"" . urlencode($value) . "\"";
    }
    $authHeader .= implode(',',$values);
    return $authHeader;
}

解决方法

如果用户的帐户中没有电子邮件地址,或者电子邮件地址未经验证,则将返回 null。

https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/manage-account-settings/api-reference/get-account-verify_credentials

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。