Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/109.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.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
Ios Twitter应用程序仅使用“身份验证”;不记名代币;_Ios_Objective C_Twitter_Twitter Oauth - Fatal编程技术网

Ios Twitter应用程序仅使用“身份验证”;不记名代币;

Ios Twitter应用程序仅使用“身份验证”;不记名代币;,ios,objective-c,twitter,twitter-oauth,Ios,Objective C,Twitter,Twitter Oauth,简短问题: 我已经在apps.twitter.com上为我的应用程序生成了一个访问令牌和一个访问令牌机密。如何使用它们向https://api.twitter.com/1.1/statuses/user_timeline.json 承载令牌由什么组成?是访问令牌还是访问令牌机密?还是两者的编码 上下文位: 我正在尝试制作一个应用程序,从我的推特时间线下载推特,而不需要应用程序用户通过他们的推特帐户进行身份验证。我理解我必须使用仅应用程序身份验证,并且文档()说明我需要使用消费者密钥和消费者秘

简短问题:

我已经在apps.twitter.com上为我的应用程序生成了一个访问令牌和一个访问令牌机密。如何使用它们向
https://api.twitter.com/1.1/statuses/user_timeline.json

承载令牌由什么组成?是访问令牌还是访问令牌机密?还是两者的编码



上下文位:

我正在尝试制作一个应用程序,从我的推特时间线下载推特,而不需要应用程序用户通过他们的推特帐户进行身份验证。我理解我必须使用仅应用程序身份验证,并且文档()说明我需要使用消费者密钥和消费者秘密来请求承载令牌。但是如果我已经使用generate按钮在apps.twitter.com上生成了令牌:



当然,我可以将这些硬编码到我的应用程序中,并以某种方式将它们作为承载令牌传递出去?我希望这样:

#define kTwitterBearerToken @"123456"    

NSURL *twitterFeedURL = [NSURL URLWithString:@"https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=kylejm_&count=10"];
NSMutableURLRequest *URLRequest = [NSMutableURLRequest requestWithURL:twitterFeedURL];
[URLRequest setHTTPMethod:@"POST"];
[URLRequest setValue:[NSString stringWithFormat:@"Bearer %@", kTwitterBearerToken] forHTTPHeaderField:@"Authorization"];
NSURLResponse *URLResponse;
NSError *URLerror;
NSData *tweetData = [NSURLConnection sendSynchronousRequest:URLRequest returningResponse:&URLResponse error:&URLerror];
NSError *JSONError;
NSArray *tweets = [NSJSONSerialization JSONObjectWithData:tweetData options:0 error:&JSONError];
NSLog(@"%@", tweets);

提前感谢您的回答和帮助

凯尔


另外,我已经看过了,但我认为在我试图实现的目标非常简单的情况下,使用它是有点不必要的(至少将预先生成的令牌传递给我似乎很简单)…

以下是我对应用程序基本时间线的想法。我打字的时候正在仔细考虑,所以请容忍我

启动时检查您是否缓存了承载令牌(最好将其存储在密钥链中,而不是用户默认值中)

否:如果没有承载令牌,请执行步骤2中概述的呼叫。然后坚持到钥匙链,然后继续

是:从永久钥匙链商店取回它*继续

现在您有了一个承载令牌,您需要创建一个Base64编码字符串(iOS有供您使用的方法),并在前面链接的页面第3步的请求中使用该编码字符串

如果在任何时候您需要重置承载令牌,例如,如果您检测到一些不成功的登录,并希望为用户提供一个流程来尝试解决该问题,则会有一个调用请求,以使承载令牌无效,然后重新请求它,基本上重复初始流程

正如其他人提到的,Twitter有一些恼人的速率限制,因此最好缓存返回的流结果并将其用于显示,然后使用速率限制较小的调用来查找某个日期范围内的tweet数量,以便确定是否需要更新缓存的数据。这只是我如何处理它的一个想法;我肯定有;s签出API文档时将显示的其他内容

希望这有助于……:)

  • 哦,是的,钥匙链。有一些不错的示例代码用于在应用程序中检索/写入/删除密钥链条目。同样:GitHub

    • 这是我生成Twitter承载令牌的要点


      要获取仅用于twitter应用程序身份验证的访问令牌:

      有关详细信息:

    • 在您的“”帐户上创建应用程序
    • 获取“kConsumerKey”和“kConsumerSecretKey”
    • 使用“kConsumerKey”和“kConsumerSecretKey”获取Base64EncodedBearToken
    • 使用“基本授权”进行“kTwitterAuthAPI”调用
    • 获取“访问令牌”并在“承载授权”呼叫中使用

    • 查看更多的澄清

      对于仅应用程序身份验证,您不需要访问令牌和访问令牌密钥,只需要使用者密钥和使用者密钥即可。您可以为任何未受保护的用户获取推文。考虑一下利率限制。谢谢Vishal。我说的对吗?你使用消费者密钥和秘密作为不记名代币?不记名代币与apps.twitter.com上生成的代币完全不同吗?老实说,我忘了,从app的角度来看,我现在处于不在乎模式,所以希望有更熟悉的人可以回答。