Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 设置Twitter API,获取最后几条推文_Javascript_Jquery_Twitter_Twitter Oauth - Fatal编程技术网

Javascript 设置Twitter API,获取最后几条推文

Javascript 设置Twitter API,获取最后几条推文,javascript,jquery,twitter,twitter-oauth,Javascript,Jquery,Twitter,Twitter Oauth,一般来说,我对使用Twitter是完全陌生的,从来没有在任何项目中嵌入过“最新推文”。我只是想在网站页脚上嵌入3-4条最新的推文,而没有其他功能。我一直在研究如何做到这一点有相当一段时间了,现在有一些麻烦 我在项目中添加了以下代码片段,效果非常好,但是,我不确定如何更新代码片段,使其使用我的Twitter帐户,而不是它设置的帐户 <div id="twitter_update_list"> </div> <script type="text/

一般来说,我对使用Twitter是完全陌生的,从来没有在任何项目中嵌入过“最新推文”。我只是想在网站页脚上嵌入3-4条最新的推文,而没有其他功能。我一直在研究如何做到这一点有相当一段时间了,现在有一些麻烦

我在项目中添加了以下代码片段,效果非常好,但是,我不确定如何更新代码片段,使其使用我的Twitter帐户,而不是它设置的帐户

    <div id="twitter_update_list">
    </div>
    <script type="text/javascript" src="http://api.twitter.com/1/statuses/user_timeline.json?screen_name=stackoverflow&include_rts=true&count=4&callback=twitterCallback2">
    </script>

此外,我一直在读到最常用的Twitter API很快就会停止工作,因为Twitter希望人们使用自己的API,而不是第三方API

我不知道如何从这里开始。我将非常感谢在这方面提出任何建议。总而言之,我所要做的就是从我的账户中获取3-4条最新推文


非常感谢

所以您真的不想再在客户端执行此操作了。(刚刚浏览了大量文档,开发人员建议执行所有oAuth服务器端)

您需要做的是:

首先:注册并创建新应用程序

第二个:注意:您的消费者密钥/机密以及访问令牌/机密

Third:下载Twitter OAuth库(在本例中,我使用了PHP库,其他库位于此处:)

Fourth:(如果使用PHP)如果您在灯上跑步,请确保启用了cURL这是您需要的命令:

sudo apt-get install php5-curl
Fifth:创建一个新的PHP文件并插入以下内容:感谢Tom Elliot



然后砰的一声,你就完了。我知道这不是一个纯粹的js解决方案,但再次阅读新的Twitter API 1.1文档,他们真的不希望您在客户端执行此操作。希望这有帮助

实际上推特有很多限制,因为像耐克和其他公司的竞争很多。tweet的阅读是有限的,因为如果你正在阅读最新的API,它实际上有点落后


他们还控制了DM延迟,这意味着您不能立即进行DM,即使您这样做,另一方也只能在X时间后接收。如果您通过脚本执行此操作,即使您试图从一个ip上进行大量DM,twitter也会简单地阻止您

如何仅使用核心PHP功能获取用户的最后几条tweet(无需CURL或Twitter oAuth库):

  • 注册您的应用程序/网页(您可能还需要验证您的个人帐户手机号码)

  • 注意使用者密钥和使用者机密

  • PHP代码:

    // auth parameters
    $api_key = urlencode('REPLACEWITHAPPAPIKEY'); // Consumer Key (API Key)
    $api_secret = urlencode('REPLACEWITHAPPAPISECRET'); // Consumer Secret (API Secret)
    $auth_url = 'https://api.twitter.com/oauth2/token'; 
    
    // what we want?
    $data_username = 'Independent'; // username
    $data_count = 10; // number of tweets
    $data_url = 'https://api.twitter.com/1.1/statuses/user_timeline.json?tweet_mode=extended';
    
    // get api access token
    $api_credentials = base64_encode($api_key.':'.$api_secret);
    
    $auth_headers = 'Authorization: Basic '.$api_credentials."\r\n".
                    'Content-Type: application/x-www-form-urlencoded;charset=UTF-8'."\r\n";
    
    $auth_context = stream_context_create(
        array(
            'http' => array(
                'header' => $auth_headers,
                'method' => 'POST',
                'content'=> http_build_query(array('grant_type' => 'client_credentials', )),
            )
        )
    );
    
    $auth_response = json_decode(file_get_contents($auth_url, 0, $auth_context), true);
    $auth_token = $auth_response['access_token'];
    
    // get tweets
    $data_context = stream_context_create( array( 'http' => array( 'header' => 'Authorization: Bearer '.$auth_token."\r\n", ) ) );
    
    $data = json_decode(file_get_contents($data_url.'&count='.$data_count.'&screen_name='.urlencode($data_username), 0, $data_context), true);
    
    // result - do what you want
    print('<pre>');
    print_r($data);
    
    //身份验证参数
    $api_key=urlencode('REPLACEWITHAPPAPIKEY');//使用者密钥(API密钥)
    $api_secret=urlencode('REPLACEWITHAPPAPISECRET');//消费者机密(API机密)
    $auth\u url='1https://api.twitter.com/oauth2/token'; 
    //我们想要什么?
    $data_username='Independent';//用户名
    $data\u count=10;//推文数量
    $data\u url='1https://api.twitter.com/1.1/statuses/user_timeline.json?tweet_mode=extended';
    //获取api访问令牌
    $api_credentials=base64_encode($api_key.:'。$api_secret);
    $auth\u headers='Authorization:Basic'。$api\u凭据。“\r\n”。
    '内容类型:application/x-www-form-urlencoded;字符集=UTF-8'。“\r\n”;
    $auth\u context=stream\u context\u create(
    排列(
    “http'=>数组(
    'header'=>$auth_headers,
    '方法'=>'发布',
    'content'=>http\u build\u查询(数组('grant\u type'=>'client\u credentials',),
    )
    )
    );
    $auth\u response=json\u decode(文件获取内容($auth\u url,0,$auth\u context),true);
    $auth_token=$auth_response['access_token'];
    //获取推文
    $data\u context=stream\u context\u create(数组('http'=>array('header'=>'Authorization:Bearer'.$auth\u token.\r\n',));
    $data=json\u decode(文件获取内容($data\u url.&count='.$data\u count.&screen\u name='.urlencode($data\u username),0,$data\u context),true);
    //结果-做你想做的
    打印(“”);
    打印(数据);
    
  • 使用XAMPP for Windows和Centos6默认安装(PHP 5.3)进行测试

    最可能的问题可能是php.ini中没有启用openssl


    要修复此问题,请检查extension=php_openssl.dll或extension=php_openssl.so行是否存在并且在php.ini中未注释

    感谢您的回复!这比预期得到3条推文要多得多,但我必须做我必须做的;)我会试试看。当你说“在dev.twitter.com上注册”时,你需要作为你想从(我客户的acc)或任何帐户(即我自己的帐户)获取推文的帐户来注册吗?@NickG不,它必须是一个推特帐户。上面第五步中的链接对此进行了解释。我们很想知道开发人员建议在服务器端执行此操作的原因?@Seano,因为令牌和密钥是敏感信息,如果被盗,可能会让未经授权的用户访问Twitter,如果在客户端执行,这些令牌和密钥将在Javascript代码中完全可见。谢谢@Rauli!如果可以,我会投更多的票:)其他人注意:目前,twitter访问令牌不会过期:,谢谢你的回答,在不下载任何库的情况下工作得很好。。。你知道我在哪里可以找到更多关于这种从twitter获取数据的方法的文档吗?Thanks@FernandoUrban有一个Twitter搜索API,它的数据url和参数与我的示例不同,但除此之外,它的工作原理应该是类似的。这仍然非常有效。所有可用的参数都可以在这里找到:如果你需要一个只使用javascript的解决方案,你可以在几天内使用Jason Mayes的Twitter帖子抓取器。我将尝试它来做一份新工作,今天对于那些不能在服务器端工作的人来说,这似乎是一个很好的方法。
    // auth parameters
    $api_key = urlencode('REPLACEWITHAPPAPIKEY'); // Consumer Key (API Key)
    $api_secret = urlencode('REPLACEWITHAPPAPISECRET'); // Consumer Secret (API Secret)
    $auth_url = 'https://api.twitter.com/oauth2/token'; 
    
    // what we want?
    $data_username = 'Independent'; // username
    $data_count = 10; // number of tweets
    $data_url = 'https://api.twitter.com/1.1/statuses/user_timeline.json?tweet_mode=extended';
    
    // get api access token
    $api_credentials = base64_encode($api_key.':'.$api_secret);
    
    $auth_headers = 'Authorization: Basic '.$api_credentials."\r\n".
                    'Content-Type: application/x-www-form-urlencoded;charset=UTF-8'."\r\n";
    
    $auth_context = stream_context_create(
        array(
            'http' => array(
                'header' => $auth_headers,
                'method' => 'POST',
                'content'=> http_build_query(array('grant_type' => 'client_credentials', )),
            )
        )
    );
    
    $auth_response = json_decode(file_get_contents($auth_url, 0, $auth_context), true);
    $auth_token = $auth_response['access_token'];
    
    // get tweets
    $data_context = stream_context_create( array( 'http' => array( 'header' => 'Authorization: Bearer '.$auth_token."\r\n", ) ) );
    
    $data = json_decode(file_get_contents($data_url.'&count='.$data_count.'&screen_name='.urlencode($data_username), 0, $data_context), true);
    
    // result - do what you want
    print('<pre>');
    print_r($data);