在开发需要访问twitter API的桌面应用程序时,必须以某种方式将应用程序的API密钥(特定于应用程序的用户密钥和使用者密钥)传递给用户.Twitter的API TOS声明应用程序的API密钥无法公开,如果发生这种情况,他们会重置它.当该应用程序在GPL下时,意味着开发人员需要向用户提供源代码,该用户如何在不公开可用的情况下获取API密钥?有没有一种标准的方法来处理这个问题?谢谢.
编辑:为了澄清这种情况,我在我的代码中将它们以纯文本形式存储在cree.py中,直到有意识的决定.但昨天Twitter支持团队联系我说他们已经重置了我的密钥,他们的推理如下:
C.您不应该征求其他开发人员的消费者密钥或消费者保密信息,特别是如果他们将被存储或用于开发人员无法控制的行为.被破坏的密钥和秘密将由Twitter重置.例如,不允许在线服务要求提供这些值以提供"推特 - 品牌"服务. https://dev.twitter.com/terms/api-terms 如果应用程序的密钥是公开发布的,则允许外部各方劫持应用程序的API访问权限.这会带来巨大的滥用风险,因此我们会重置您的API密钥.请注意确保这些密钥不会再次公开发布.
谢谢,Twitter API政策
我正在使用scribe在我的应用程序中实现twitter.用户验证我的应用程序并重定向到新的URL后,我得到了oauth_token和oauth_verifier,但无法弄清楚如何从中生成oauth_token和oauth_secret.请妥善解决问题并提前感谢!!!
在使用twitter API时,我遇到的oauth_signature基本上是(请求体+请求参数+ nonces/timestamps + a consumer_secret)的哈希值.该consumer_secret已知仅到正在发送的请求的应用程序.
在Twitter的案例中:
consumer_secret向每个授权的应用程序发出.由于主要用于oauth_signature防止MITM(即没有山雀(在传输中篡改):),在我看来,这个特定的用例可以通过相互SSL解决
consumer_secret,可以为每个应用程序颁发SSL证书.虽然客户端ssl证书的这种想法可能看起来像20世纪90年代的互联网奥秘,但它并不成功,主要是因为验证客户端证书的信任链存在问题.这个问题不会出现在这里,因为twitter将是证书的唯一发行者和验证者.缺点是更多地涉及代表Twitter生成初始应用程序/客户端ssl证书的努力,但回报将是REST API的简单性,这可以依赖于客户端是他所说的人的保证.
请注意,在这种情况下,twitter只是一个例子.AFAIK,大多数其他oauth实现者使用类似的策略,这里的要点适用于已经强制要求SSL的任何大型OAuth实现者.
我在这里错过了什么?互联网惯性?
ssl restful-authentication oauth client-certificates twitter-oauth
我使用以下代码从Android AccountManager获取Twitter凭据:
AccountManager am = AccountManager.get(this);
Account account = am.getAccountsByType("com.twitter.android.auth.login")[0];
am.invalidateAuthToken("com.twitter.android.auth.login", null);
am.getAuthToken(account, "com.twitter.android.oauth.token", null, this, createCallback(TOKEN), null);
am.getAuthToken(account, "com.twitter.android.oauth.token.secret", null, this, createCallback(TOKEN_SECRET), null);
Run Code Online (Sandbox Code Playgroud)
我正在使用回调返回的值来设置Twitter4J Twitter对象:
Twitter twitter = new TwitterFactory().getInstance();
twitter.setOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET);
twitter.setOAuthAccessToken(new AccessToken(token, tokenSecret));
User user = twitter.verifyCredentials();
Run Code Online (Sandbox Code Playgroud)
但是在调用verifyCredentials()时会产生以下异常:
Exception connecting to twitter
Received authentication challenge is null
Relevant discussions can be found on the Internet at:
http://www.google.co.jp/search?q=6f0f59ca or
http://www.google.co.jp/search?q=200bae40
TwitterException{exceptionCode=[6f0f59ca-200bae40 1de2170b-e16a1586], statusCode=-1, message=null, code=-1, retryAfter=-1, rateLimitStatus=null, version=3.0.2}
at twitter4j.internal.http.HttpClientImpl.request(HttpClientImpl.java:192)
at twitter4j.internal.http.HttpClientWrapper.request(HttpClientWrapper.java:61)
at twitter4j.internal.http.HttpClientWrapper.get(HttpClientWrapper.java:89)
at twitter4j.TwitterBaseImpl.fillInIDAndScreenName(TwitterBaseImpl.java:126)
at twitter4j.TwitterImpl.verifyCredentials(TwitterImpl.java:578) …Run Code Online (Sandbox Code Playgroud) 我已经创建了一个Twitter应用程序来自动发布到我的Twitter帐户.所以,我不需要授权新用户.
我已经设置了读/写访问级别,并收到了访问令牌.我在应用程序中使用了OAuth工具来生成cURL命令:
curl --request'POST''https : //api.twitter.com/1/statuses/update.json'-- data'status = Maybe + he%27ll + finally + find + his + keys.+%23peterfalk' --header'授权:OAuth oauth_consumer_key ="...",oauth_nonce ="97fad626790e8e5988d4a06cfd47fa74",oauth_signature ="...",oauth_signature_method ="HMAC-SHA1",oauth_timestamp ="1364161424",oauth_token ="......" ,oauth_version ="1.0"' - verbose
在命令之上,它说:
重要提示:此功能仅在几分钟内有效.还记得cURL命令实际上会执行请求.
我假设这将在Linux终端中工作.
我想知道如何将其转换为PHP cURL命令.这是我尝试过的.请注意,$ DST的值是https://dev.twitter.com/docs/auth/authorizing-request中"DST"的值; 它也等于--header 'Authorization:OAuth工具中cURL命令之后的字符串值.
$ch = curl_init();
curl_setopt_array($ch, array(
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_URL => $url,
CURLOPT_POST => 1,
CURLOPT_POSTFIELDS => array(
data => 'status='.urlencode($status),
header => 'Authorization: '.$DST
)
));
$resp = curl_exec($ch);
curl_close($ch);
Run Code Online (Sandbox Code Playgroud)
但价值$resp是:
{
request: "/1/statuses/update.json",
error: …Run Code Online (Sandbox Code Playgroud) 在护照我有Twitter身份验证.一切都很好登录明智.我有这个代码
app.get('/auth/twitter', function (req, res) {
if (req.user) {
return res.redirect('/');
}
return passport.authenticate('twitter')(req, res);
});
Run Code Online (Sandbox Code Playgroud)
因此,如果用户已经使用Twitter登录到我的网站,它只会重定向回来(最终可能会给出一条消息).一旦他们退出网站并再次点击Twitter登录,他们就会再次访问Twitter授权应用页面.它不应该.当我查看其他网站时,它永远不会要求我再次授权该应用程序.如果我查看我的推特配置文件的授权应用程序部分,我会看到我正在开发的应用程序.
为什么我的应用程序在我已经提交时仍继续要求授权?我该怎么改变这个(我在db中存储令牌和token_secret)?谢谢您的帮助.
我们使用软件应用程序将推文发布到来自同一IP地址的多个帐户.在twitter的回应中,我们得到403错误代码,我们使用的API是REST API.
是否对IP地址有任何限制,因为我们肯定没有跨越为REST API提到的API后限.
我们也不会超过140个字符.
等待回复..
提前致谢..
我想建立一个用于Twitter的卫星登录.但我不能说使用Oauth2.0是如何做到的.
我的功能在这里:
$authProvider.twitter({
authorizationEndpoint: 'https://api.twitter.com/oauth/authorize',
redirectUri: window.location.origin || window.location.protocol + '//' + window.location.host,
scope: [],
scopeDelimiter: ' ',
type: '2.0',
clientId: '[myClientID]'
});
Run Code Online (Sandbox Code Playgroud)
我错了什么?
我在Swift应用程序中使用Twitter API,我想显示特定的推文及其所有回复,我该怎么做?
我看到许多旧帖子说"没有办法检索推文的回复",它改变了吗?现在有办法吗? 帖子的例子
我试图通过twitter与react-native登录.显然对于iOS来说它是有效的,因为我使用的是react-native-simple-auth软件包.
但是android怎么样?似乎还没有针对Twitter本机登录的软件包?
android twitter-oauth twitter-fabric react-native twitter-login