Twitter应用程序 - 使用“承载令牌”进行身份验证

时间:2014-04-19 20:01:49

标签: ios objective-c twitter twitter-oauth

简短的问题:

我已经在apps.twitter.com为我的应用程序生成了访问令牌访问令牌密钥。如何使用它们向https://api.twitter.com/1.1/statuses/user_timeline.json发送请求?

什么是不记名令牌?是访问令牌还是访问令牌密钥?或两者的编码?



上下文:

我正在尝试制作一个从我的Twitter时间线下载推文的应用程序,而app用户不必通过他们的Twitter帐户进行身份验证。我知道我必须使用仅应用程序身份验证,并且文档(https://dev.twitter.com/docs/auth/application-only-auth)声明我需要使用使用者密钥使用者密钥来请求承载令牌。但是如果我已经使用生成按钮在apps.twitter.com上生成了令牌:


Screen shot of my app on the apps.twitter.com page


我当然可以将这些硬编码到我的应用程序中并以某种方式将它们作为Bearer Token传递出去?像这样我期待:

#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);


提前感谢您的回答和帮助!

凯尔

P.S。我已经看过STTwitter了,但是当我想要实现的东西如此简单时,认为使用它有点不必要(至少将预先生成的令牌传递给我似乎很简单) ...

3 个答案:

答案 0 :(得分:2)

获取仅限Twitter应用程序的访问令牌身份验证:

有关详情:Twitter-App-Only-Authentication-iOS

  1. 在“https://apps.twitter.com”帐户
  2. 上创建一个应用程序
  3. 获取“kConsumerKey”和“kConsumerSecretKey”
  4. 使用“kConsumerKey”和“kConsumerSecretKey”获取Base64EncodedBearerToken
  5. 使用“基本授权”进行“kTwitterAuthAPI”调用
  6. 获取“access_token”并在“Bearer Authorization”调用
  7. 中使用它

    查看code以获取更多说明!

答案 1 :(得分:0)

以下是我对该应用基本时间表的看法。在我打字的时候,我正在思考它,所以请耐心等待......

启动时检查您是否已缓存持票人令牌(可能最好将其存储在钥匙串而不是用户默认设置中)....

否:如果没有持有人令牌,请在步骤2中进行概述here,然后继续使用钥匙串,然后继续......

是:从持久性钥匙串商店取回*继续......

现在你有一个持有者令牌,你需要制作一个Base64编码的字符串(iOS有你可以使用的方法),并在先前链接的页面的请求中使用该编码的字符串。步骤3。

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

正如其他人所说,Twitter有一些恼人的速率限制,因此最好缓存返回的流量结果并使用它们进行显示然后使用限制较少的呼叫来查找推文的数量。日期范围,以便您可以确定是否需要更新缓存的数据。我只想到了如何处理它;我确定在那里;其他一些将通过检查API文档出现。

希望有帮助......:)

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

答案 2 :(得分:0)

这是我制作Twitter Bearer Token的要点。

https://gist.github.com/celian-m/88c354794fa98923cdc8#file-gistfile1-m