我想从 Twitter api 检索前 10 名或前 20 名最流行的主题标签。
我该怎么做,是否有任何直接的 api,或者我应该使用 twitter 搜索 api 收集大型数据集并手动收集流行的主题标签?
我正在使用 Ionic 开发移动应用程序,我必须与 Twitter API 连接。所以我使用 ng-cordova 和$cordovaAuth. 但是当我这样做时:
$cordovaOauth.twitter(clientId, clientSecret);
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
错误错误:选上的SHA变体不以错误(天然的)在新的T(支持http://192.168.1.19:8100/lib/sha-js/sha1.js:12:276在Object.createSignature()的http:/ /192.168.1.19:8100/lib/ngCordova/dist/ng-cordova.js:6120:38 ) 在 Object.twitter ( http://192.168.1.19:8100/lib/ngCordova/dist/ng-cordova.js: 5623:55 ) 在 Object.initialize ( http://192.168.1.19:8100/js/services/twitter.js:18:18 )
所以,问题来自于sha1.js,我将它包含在我的index.html
如果你能帮助我就好了!
我正在 Wordpress 中开发一个应用程序,它允许用户使用他们的 Twitter 帐户登录,然后将用户重定向到一个表单。在提交该表单时,会向用户的 Twitter 句柄发送一条推文。我正在使用 Abraham'stwitteroauth来实现 Twitter OAuth。
Twitter登录成功后重定向模板的源码:
<pre>
<?php
/*
*Template Name: Callback
*/
?>
<?php
session_start();
require "twitteroauth/autoload.php";
use Abraham\TwitterOAuth\TwitterOAuth;
define('CONSUMER_KEY', "XXXXXXXXXXXXXXX");
define('CONSUMER_SECRET', "XXXXXXXXXXXXXX");
define('OAUTH_CALLBACK', " http://localhost/wordpress/index.php/callback/");
$request_token = [];
$request_token['oauth_token'] = $_SESSION['oauth_token'];
$request_token['oauth_token_secret'] = $_SESSION['oauth_token_secret'];
if (isset($_REQUEST['oauth_token']) && $request_token['oauth_token'] !== $_REQUEST['oauth_token'])
{
echo "Opps! Something went wrong!";
}
else
{
$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $request_token['oauth_token'], $request_token['oauth_token_secret']);
$access_token = $connection->oauth("oauth/access_token", array("oauth_verifier" => $_REQUEST['oauth_verifier']));
//print_r($access_token);
$_SESSION['access_token'] = $access_token;
}
$access_token = $_SESSION['access_token'];
$connection …Run Code Online (Sandbox Code Playgroud) 我正在使用AbrahamTwitter 库来搜索推文。一切都很顺利,但问题是,我的搜索返回了 100 多个结果。
是否有一种简单的循环方法,例如使用 API 的较新 v1.1 进行分页?
\n\n我需要能够通过特定搜索的搜索获取所有推文,然后循环每个结果以创建一个数组
\n\n这就是我目前所拥有的:
\n\n$connection = new Abraham\\TwitterOAuth\\TwitterOAuth(\n \xe2\x80\x98KEY\',\n \xe2\x80\x98KEY\',\n \xe2\x80\x98KEY\',\n \xe2\x80\x98KEY\'\n);\n\n$statuses = $connection->get("search/tweets\xe2\x80\x9d,\n array(\n "q" => \xe2\x80\x99something\',\n "result_type" => "recent",\n "include_entities" => true,\n "count" => 100\n )\n);\n// possibly put into a loop - paging\nRun Code Online (Sandbox Code Playgroud)\n\nvar_dump($statuses->statuses)给我一个对象数组 (100)\n所以假设我的搜索词返回了 298 个结果。根据我上面的代码,pages可以说 I\xe2\x80\x99d 有 3 个。
我想知道最好的方法是什么?
\n\n搜索词 I\xe2\x80\x99m 使用一些流行的词,可能每分钟 100 个。我正在考虑通过 cronjob 每小时运行一次,这样我的数组中就可以有 600-1000 条推文
\n\n我\xe2\x80\x99已经看到了since_id和max_id,但不确定我\xe2\x80\x99d如何在我的应用程序中使用它们。
我\xe2\x80\x99m …
我正在尝试向此端点发出 POST 请求:https://api.twitter.com/oauth/request_token(作为实现 Twitter 登录的第一步)
正如文档中所述: https: //dev.twitter.com/oauth/reference/post/oauth/request_token不需要身份验证。但是,当我尝试时,我得到以下响应:
{
"errors": [
{
"code": 215,
"message": "Bad Authentication data."
}
]
}
Run Code Online (Sandbox Code Playgroud)
显然我做错了什么。我有一个注册的应用程序和与之配套的消费者密钥/秘密,我不确定是否需要以某种方式使用它们(在这种情况下,奇怪的是它在文档中说这个端点不需要身份验证)。
有人有这方面的经验吗?
编辑:请求示例
curl -X POST -d "{'oauth_callback':'http://www.callback-url.com/'}" --header "Content-Type:application/json" https://api.twitter.com/oauth/request_token
Run Code Online (Sandbox Code Playgroud)
还尝试不设置 Content-Type 标头。
我在我的 PHP 应用程序中使用Hybridauth 3 代表我的帐户发布一些定期推文。该应用程序具有所有可能的权限。当它在第一个身份验证步骤中要求它们时,我将授予它所有权限。在那之后,Twitter 将我重定向到指定的回调 URL,在那里我得到了一对 access_token 和 access_token_secret。但是当我尝试使用这些令牌发推文时 - 它给了我:
{"errors":[{"code":220,"message":"Your credentials do not allow access to this resource."}]}
Run Code Online (Sandbox Code Playgroud)
这是我尝试发推文的方式:
$config = [
'authentication_parameters' => [
//Location where to redirect users once they authenticate
'callback' => 'https://mysite/twittercallback/',
//Twitter application credentials
'keys' => [
'key' => 'xxx',
'secret' => 'yyy'
],
'authorize' => true
]
];
$adapter = new Hybridauth\Provider\Twitter($config['authentication_parameters']);
//Attempt to authenticate the user
$adapter->setAccessToken(/*tokens I've got from getAccessToken() on /twittercallback/*/);
if(! $adapter->isConnected()) {
// never goes …Run Code Online (Sandbox Code Playgroud) 我正在我的应用程序中的单个 Activity 下集成 Google 登录和 Twitter 登录,但是当我点击 twitter 登录按钮时,它会授权帐户,然后推回 mainActivity,并出现下面提到的错误。Google 登录正常工作,但在授权后点击 twitter 登录按钮发送回主要活动。
Authorization completed with an error
com.twitter.sdk.android.core.TwitterAuthException: Authorize failed.
at com.twitter.sdk.android.core.identity.TwitterAuthClient.handleAuthorize(TwitterAuthClient.java:112)
at com.twitter.sdk.android.core.identity.TwitterAuthClient.authorize(TwitterAuthClient.java:103)
at com.twitter.sdk.android.core.identity.TwitterLoginButton$LoginClickListener.onClick(TwitterLoginButton.java:160)
at android.view.View.performClick(View.java:5106)
at android.view.View$PerformClick.run(View.java:20329)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5912)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(Zyg
Run Code Online (Sandbox Code Playgroud)
我的主要活动代码是
public class MainActivity extends AppCompatActivity {
SignInButton signInButton;
TwitterLoginButton mLoginButton;
ProgressDialog progressDialog;
GoogleSignInClient mGoogleSignInClient;
FirebaseAuth mAuth;
private static final String TAG = "GoogleActivity";
private static final String TAGS = "TwitterLogin";
private static final …Run Code Online (Sandbox Code Playgroud) twitter android twitter-oauth firebase firebase-authentication
我尝试运行下面的代码并收到一条错误消息:HTTP 错误代码:403:禁止:身份验证成功但帐户无权访问此资源。
from searchtweets import ResultStream, gen_rule_payload, load_credentials, collect_results
import requests
premium_search_args = load_credentials("/home/dirname/twitter_keys.yaml",
yaml_key="search_tweets_premium",
env_overwrite=False)
rule = gen_rule_payload("basketball", results_per_call=100) # testing with a sandbox account
print(rule)
from searchtweets import collect_results
tweets = collect_results(rule,
max_results=100,
result_stream_args=premium_search_args)
# print(tweets.all_text)
[print(tweet.all_text, end='\n\n') for tweet in tweets[0:10]];
Run Code Online (Sandbox Code Playgroud)
我的 YAML 文件如下所示:
search_tweets_premium:
account_type: premium
endpoint: https://api.twitter.com/1.1/tweets/search/fullarchive/dev.json
consumer_key: AAAAAAAAAAAAAAAAAAAAA
consumer_secret: BBBBBBBBBBBBBBBBBBBBBBBBBBB
Run Code Online (Sandbox Code Playgroud)
唯一需要注意的是,我正在使用免费/沙盒服务。
如果我在代码、YAML 和/或我的 Twitter 开发人员帐户中做错了什么,有什么想法吗?
https://api.twitter.com/1.1/account_activity/all/prod/webhooks.json?url=https://test.com不工作
我已按照所有步骤创建一个新应用程序并获取消费者密钥、密钥和令牌详细信息,并尝试通过邮递员创建 webhook。我收到以下错误
{
"errors": [
{
"code": 32,
"message": "Could not authenticate you."
}
]
}
Run Code Online (Sandbox Code Playgroud)
我已经尝试过删除和获取 webhook 的方法,它工作正常。
我已经通过创建签名实现了所有内容。我创建了一个函数来收集所需的参数(为了清楚起见,我在此处添加了一些注释):
function collect_parameters(){
global $credentials; // This is an Object with my App's credentials and stuff
$oAuth = get_user_oauth(); // This returns an object with the the personal user OAuth tokens retrieved from the earlier docs.
$encoded_collection = array();
$collection = array(
'status' => rawurlencode( $_GET['tweet'] ),
'include_entities' => 'true',
'oauth_consumer_key' => $credentials->key,
'oauth_nonce' => $credentials->nonce, // md5( str_shuffle( uniqid() . mt_rand(0,9999999999) ) )
'oauth_signature_method' => 'HMAC-SHA1',
'oauth_timestamp' => $credentials->time, // current timestamp
'oauth_token' => $oAuth->oauth_token,
'oauth_version' => …Run Code Online (Sandbox Code Playgroud)