标签: twitter-oauth

试图从 Twitter 的 GET 请求中获取 ResponseText

我正在努力提高我对 VBA 的了解,学习 GET、POST 和其他东西,因为我看过很多例子,但无法理解我做错了什么。可能是 Oauth 部分。

主要问题是我只是一个 Excel 人。我不是网络开发人员,所以我的知识几乎为零,而且可能我错过了很多基本的东西。

我希望这个问题不要太宽泛。

背景:我正在尝试从推文中获取 JSON 对象的 ResponseText。信息是公开的,您无需登录即可查看我想获取的信息,也不需要 Twitter 帐户。

为了测试,我正在使用这条推文:https : //twitter.com/StackOverflow/status/1273391252357201922

我想要什么:使用开发人员工具检查代码(我使用的是 Firefox),我已经看到了:

在此处输入图片说明

此 GET 请求返回此 ResponseText: 在此处输入图片说明

所以我想将该 ResponseText 放入 VBA。

我的代码:在这里检查不同的代码,我已经建立了这个:

Sub test()
    Dim MiHttp As Object
    Dim MiUrl As String
    Set MiHttp = CreateObject("MSXML2.XMLHTTP")
    
    MiUrl = "https://api.twitter.com/2/timeline/conversation/1273391252357201922.json?include_profile_interstitial_type=1&include_blocking=1&include_blocked_by=1&include_followed_by=1&include_want_retweets=1&include_mute_edge=1&include_can_dm=1&include_can_media_tag=1&skip_status=1&cards_platform=Web-12&include_cards=1&include_ext_alt_text=true&include_reply_count=1&tweet_mode=extended&include_entities=true&include_user_entities=true&include_ext_media_color=true&include_ext_media_availability=true&send_error_codes=true&simple_quoted_tweet=true&count=20&ext=mediaStats%2ChighlightedLabel&include_quote_count=true"
    
    With MiHttp
        .Open "GET", MiUrl
        .Send
        DoEvents
     
        Debug.Print .responseText
    End With


    MiHttp.abort
    Set MiHttp = Nothing
End Sub
Run Code Online (Sandbox Code Playgroud)

它运行,没有编码错误,但我明白了:

{"errors":[{"code":200,"message":"Forbidden."}]}

所以我尝试添加带有授权的 RequestHeaders: 在此处输入图片说明

在之前添加这行代码.Send

.setRequestHeader …
Run Code Online (Sandbox Code Playgroud)

twitter excel vba twitter-oauth

8
推荐指数
1
解决办法
660
查看次数

访问令牌的长度是否超过255个字符?

当允许OAuth登录时(例如OpenID,Facebook,Twitter等),我们将誓言提供者提供的访问令牌保存在mysql数据库中以供将来验证.在一些教程中,用于保存访问令牌的列是varchar(255)有用的text.我想知道访问令牌(由常见的网站,如Facebook和Twitter)是否超过255个字符需要text列.我们应该考虑这种可能吗?

authentication facebook oauth twitter-oauth facebook-oauth

7
推荐指数
2
解决办法
1万
查看次数

使用Oauth将图像发布到Node.js中的twitter

我正在尝试使用Oauth模块将图像发布到Twitter.这是我有的:

它引发403错误,我知道我在如何将媒体添加到帖子时做错了但我不知道从哪里开始.

var https = require('https');
var OAuth= require('oauth').OAuth;
var keys = require('./twitterkeys');
var twitterer = new OAuth(
           "https://api.twitter.com/oauth/request_token",
           "https://api.twitter.com/oauth/access_token",
           keys.consumerKey,
           keys.consumerSecret,
           "1.0",
           null,
           "HMAC-SHA1"
          );


var params = {
    status : "Tiger!",
    media : [("data:" + mimeType + ";base64,") + fs.readFileSync(path,'base64')]
};

//function(url, oauth_token, oauth_token_secret, post_body, post_content_type, callback)
twitterer.post("https://upload.twitter.com/1/statuses/update_with_media.json",
           keys.token, keys.secret, params, "multipart/form-data",
           function (error, data, response2) {
           if(error){
               console.log('Error: Something is wrong.\n'+JSON.stringify(error)+'\n');

           }else{
               console.log('Twitter status updated.\n');
               console.log(response2+'\n');
           }
           });
Run Code Online (Sandbox Code Playgroud)

这是我相信我要做的事情,但我不知道如何在Node.js Oauth模块中做到这一点. 使用Twitter + OAuth将图片发布到Twitter

twitter node.js twitter-oauth

7
推荐指数
1
解决办法
3724
查看次数

RestSharp和Twitter API 1.1:如何正确URLEncode状态更新文本?

我正在尝试使用RestSharp从我的网络应用发布Twitter状态.以下代码完美运行:

var status = "I am fine with posting this status.";

var client = new RestClient("https://api.twitter.com");

// The OAuth keys/tokens/secrets are retrieved elsewhere
client.Authenticator = OAuth1Authenticator.ForProtectedResource(
    _consumerKey, _consumerSecret, _accessToken, _accessTokenSecret
);

var request = new RestRequest("/1.1/statuses/update.json", Method.POST);
request.AddParameter("status", status, ParameterType.GetOrPost);

var response = client.Execute(request);
Run Code Online (Sandbox Code Playgroud)

但是,如果我在状态文本中包含以下任何字符,则此代码将失败并出现身份验证错误: ! * ' ( )

通过大量的论坛拖网,我推断这与OAuth签名编码不匹配POST参数的编码有关.我在SO上发现了这个问题,但在GitHub上搜索RestSharp问题却没有任何帮助.

我可以在RestSharp source(UrlEncodeRelaxed)中看到一些代码,这些代码似乎是手动编码符合OAuth编码规范的特定字符集,因此我尝试以相同的方式手动编码我的状态中的这些字符(使用代码来自RestSharp)之前传入它,例如:

var status = "I'm NOT fine with posting this status.";

string[] UriRfc3986CharsToEscape = …
Run Code Online (Sandbox Code Playgroud)

c# twitter oauth restsharp twitter-oauth

7
推荐指数
1
解决办法
3041
查看次数

使用twitter获取持有者令牌

我正在使用以下代码返回持票人令牌,但我一直在获取

"远程服务器返回错误:(500)内部服务器错误"在线"WebResponse response = request.GetResponse();"

 WebRequest request = WebRequest.Create("https://api.twitter.com/oauth2/token");

    string consumerKey = "31111111111111111111";
    string consumerSecret = "1111111111111111111111A";
    string consumerKeyAndSecret = String.Format("{0}:{1}", consumerKey, consumerSecret);

    request.Method = "POST";   
    request.Headers.Add("Authorization", String.Format("Basic {0}", Convert.ToBase64String(Encoding.Unicode.GetBytes(consumerKeyAndSecret))));

    request.ContentType = "application/x-www-form-urlencoded;charset=UTF-8";

    string postData = "grant_type=client_credentials";
    byte[] byteArray = Encoding.UTF8.GetBytes(postData);
    request.ContentLength = byteArray.Length;
    Stream dataStream = request.GetRequestStream();
    dataStream.Write(byteArray, 0, byteArray.Length);
    dataStream.Close();

    WebResponse response = request.GetResponse();
Run Code Online (Sandbox Code Playgroud)

任何建议都会很棒

twitter oauth oauth-2.0 twitter-oauth

7
推荐指数
2
解决办法
6267
查看次数

如何使用Twitter OAuth指定范围?

使用Twitter OAuth,用户可以获得以下信息:

Twitter应用权限请求

我只需要发布推文,是否可以只询问?

Facebook在请求身份验证时支持"范围"参数,但我没有看到类似Twitter的内容: Twitter授权

twitter-oauth

7
推荐指数
1
解决办法
3479
查看次数

尽管登录成功,Twitter套件仍会出错

我正在使用Twitter工具包登录Twitter.登录到Twitter后,我在日志中收到以下错误.

登录代码:

- (IBAction)btnTwitterLogin_pressed:(id)sender
{
    [[Twitter sharedInstance] logInWithCompletion:^
     (TWTRSession *session, NSError *error) {
         if (session) 
         {
             // This session is then used to make Twitter API requests.
             NSLog(@"%@", [session userID]);
             NSLog(@"%@", [session userName]);
             NSLog(@"%@", [session authToken]);
             NSLog(@"%@", [session authTokenSecret]);

             [self requestUserEmail];
         }
         else 
         {
             NSLog(@"Error: %@", [error localizedDescription]);
         }
     }];
}
Run Code Online (Sandbox Code Playgroud)

错误日志:

[TwitterKit] didEncounterError:withMessage:无效参数不满足:错误

我找不到原因.有人遇到过同样的问题吗?

twitter ios twitter-oauth twitter-fabric

7
推荐指数
1
解决办法
792
查看次数

为什么要对Authorization标头进行base64编码?

Twitter的API要求发送Authorization标头,该标头是与API密钥连接的API密钥的base64编码.在Node中,我使用:

var base64 = new Buffer(apiKey + ':' + apiSecret).toString('base64');
Run Code Online (Sandbox Code Playgroud)

发送的标头变为:

Authorization: 'Basic ' + base64
Run Code Online (Sandbox Code Playgroud)

base64编码字符串"apiKeyHere:apiSecretHere"有什么意义?为什么不接受包含原始api凭证的Authorization标头?

这个问题类似于base 64编码的目的是什么以及它在HTTP基本身份验证中使用的原因?但投票的答案并没有完全回答我的问题.Twitter的api密钥和api密钥已经是HTTP兼容的字符.他们看起来像这样(这些不是真的):

消费者密钥(API密钥)8dme3utVQfOhlPk5BUG9XbFxR

消费者秘密(API Secret)QFZXoC7MP72JZtGMBNpjLGI4Vl1xr1q9dyPLp3u7jGtkESpbLm

那么为什么base64会编码呢?此外,该帖子指出"编码的目的是将可能在用户名或密码中的非HTTP兼容字符编码为与HTTP兼容的字符." 用户名和密码不是HTTP兼容字符吗?

base64 oauth oauth-2.0 twitter-oauth bearer-token

7
推荐指数
2
解决办法
1万
查看次数

nodejs https#request在相同的curl请求成功的地方失败

我正在尝试连接到twitter api的公共流端点.

当我运行示例参数时,我从nodejs中的twitter api测试工具获得我得到的401 unauthorized错误,你可以看到我的nodejs示例请求

 'use strict';
const https = require('https');
const qs = require('querystring');
const obj = {
    method: "POST",
    headers: {
        Authorization: 'OAuth oauth_consumer_key="pXZ8xSWvjZjE4UaNntVsCwWPg", oauth_nonce="776f1a4ec0c3ed9ecbfb68aa0f7e2324", oauth_signature="jk8e84V0OcgcepkL7F%2BXt2fAy8o%3D", oauth_signature_method="HMAC-SHA1", oauth_timestamp="1463258508", oauth_token="416282416-vFTMVJCFiRW8G6nwoFhH3OBqrJsKDbIJ93sbOm2a", oauth_version="1.0"'
    },
    hostname: "stream.twitter.com",
    path: "/1.1/statuses/filter.json"
}
https.request(obj,res => {
    res.on("data", d => {
        console.log(d.toString());
    });
}).end(qs.stringify({track:"javascript"}))
Run Code Online (Sandbox Code Playgroud)

但是,如果我发送这个请求curl它完全适用于这里是我的示例curl请求

curl --request 'POST' 'https://stream.twitter.com/1.1/statuses/filter.json' --data 'track=javascript' --header 'Authorization: OAuth oauth_consumer_key="pXZ8xSWvjZjE4UaNntVsCwWPg", oauth_nonce="776f1a4ec0c3ed9ecbfb68aa0f7e2324", oauth_signature="jk8e84V0OcgcepkL7F%2BXt2fAy8o%3D", oauth_signature_method="HMAC-SHA1", oauth_timestamp="1463258508", oauth_token="416282416-vFTMVJCFiRW8G6nwoFhH3OBqrJsKDbIJ93sbOm2a", oauth_version="1.0"' --verbose 
Run Code Online (Sandbox Code Playgroud)

我做错了什么?他们完全相同的要求.

https curl request node.js twitter-oauth

7
推荐指数
1
解决办法
681
查看次数

将Twitter Api集成到ANDROID上(使用来自twitter的原生api)

最近Twitter工具包将失去支持,我想知道什么是正确和推荐的方式来集成显示搜索的推文推文(使用api本地或一些新的替代品,推特套件)现在和未来.

大多数在线教程已弃用或使用Twitter工具包不能用于Twitter在您的服务上进行的某些更改并且在oAuth上失败.

问题是如何在今年将Twitter与Android Api-28上的新原生api集成

如果有人有样品或开始项目,我会对此进行评估.

java twitter android twitter-oauth twitterkit

7
推荐指数
1
解决办法
436
查看次数