提供默认Twitter帐户进行身份验证

时间:2013-07-11 12:14:30

标签: ios twitter twitter-oauth

我想显示一个特定Twitter页面的供稿。无论用户是谁,我希望能够指定要获取的推文数量以及要检索的推特用户(这将是硬编码的)

我已使用以下代码启动身份验证

self.accountStore = store;     ACAccountType * twitterAccountType = [self.accountStore                                          accountTypeWithAccountTypeIdentifier:                                          ACAccountTypeIdentifierTwitter];

下面有很多代码,我在twitter文档中都有这个代码,所以基本上,如果没有设置帐户,这将抛出一个UIAlertView。

我想考虑一下这个应用的用户: 1 - 可能没有推特账号 2 - 他们不在手机上使用Twitter,因此未在设置中设置

Twitter Feed在此应用程序中用作新闻源,所以我的问题是,

无论如何,我可以为twitter api提供一个默认用户,硬编码,而无需通过帐户?

我想知道accountStore会提取什么样的信息,所以也许我可以复制它并在构建类似的结构后将其发送到twitter api。

我对iPhone编程有点新意,所以如果其中一些非常明显,请原谅我。

感谢您的时间。

2 个答案:

答案 0 :(得分:2)

我找到了帮助我满足要求的答案,

我的要求是我正在开发一个iPhone应用程序,需要来自twitter上某个特定用户的特定推文。虽然使用旧的twitter api非常容易,但是使用v1.1,需要用户身份验证。

虽然iOS提供了他们自己的社交sdk,但我想考虑这样一个事实:用户可能没有Twitter或者没有在他们的手机上登录并仍然收到提要。从我的研究中,我没有找到任何东西,因为几乎所有的解决方案都导致检查用户的iPhone设置,以确保他们已经设置了一个Twitter帐户。

因此,由于这些是我的约束,我决定使用PHP创建一个Web服务,通​​过twitter进行身份验证并提取我需要的推文。将它们编码为JSON并回显它。

然后从IOS应用程序中,我调用了这个Web服务并对其进行反序列化并使用它我需要的方式。

现在有些代码了。

如何在新的Twitter API中使用PHP的大多数答案都可以在这里找到: https://github.com/J7mbo/twitter-api-php。从这里抓取文件,你可以看到他给出的例子。我在下面给了一个小的。

以下是我需要使用的一些步骤

  • 在Twitter上创建一个应用。到这里https://dev.twitter.com/,使用您的Twitter帐户登录。到达那里后,您需要创建一个应用程序。
  • 从上面抓取文件并将TwitterAPIExchange.php放在您的服务器上
  • 创建您的php文件并输入 require_once('TwitterAPIExchange.php');在顶部
  • 创建应用程序后,从仪表板中,您将获得一些需要通过twitter api进行身份验证的信息。像你这样在你的PHP中使用它

    $ settings = array(     'oauth_access_token'=> “YOUR_OAUTH_ACCESS_TOKEN”     'oauth_access_token_secret'=> “YOUR_OAUTH_ACCESS_TOKEN_SECRET”     'consumer_key'=> “YOUR_CONSUMER_KEY”     'consumer_secret'=> “YOUR_CONSUMER_SECRET” );

设置好此阵列后,您可以继续指定设置所需内容所需的内容

$url = 'https://api.twitter.com/1.1/statuses/user_timeline.json';
$getfields = '?screen_name=screen_name_you_want&count=number_of_tweets_you_want';
$requestMethod = 'GET';

url说明了我的脚本验证后想要获取的资源。下面是参数。您要检索的屏幕名称和推文数量。请求方法协议将是GET。如果您想将某些内容发布到时间轴,则需要使用POST,但还需要从您的开发帐户修改您的应用访问权限。目前,我的应用只有读取权限,因为我只需要它。

然后是时间执行

$twitter = new TwitterAPIExchange($settings); 
$tweets = $twitter->setGetfield($getfield)
             ->buildOauth($url, $requestMethod)
             ->performRequest();

如果你在J7mbo的github上看到这个例子,他会回答整个时间表,你可以这样做,看看它是什么样的,所以我想深入了解并得到推文。

$tweet_array = array();
$index = 1;
foreach($tweets as $feed=>$item)
{
   $arr_index = 'tweet'.$index;
   $tweet_array[$arr_index] => $item['text'];
   $index++;
}

echo json_encode($arr_index);

这将回应json,如“tweet1”=>“最新推文”,“tweet2”=>“第二次最新推文”

从Xcode然后你可以调用这个url并获取json feed并按照你想要的方式使用它。

旁注:无论何时运行脚本,都需要一段时间来进行身份验证并检索Feed,因为这是针对IOS应用程序的,所以最好应用缓存。根据相关用户更新其推特的频率,您可以拥有time_limit。每当您检索推文时,它都会将其存储在数据库中。如果下一个用户请求推文,请检查时间限制,如果它更少,则从数据库中检索它,如果超过了时间限制,则更新数据库并向用户发送新结果。

我要感谢J7mbo的GitHub库以及MZimmerman,因为他使用tumblr指出了一个更简单的解决方法。

感谢。

答案 1 :(得分:0)

Twitter我相信现在实际上会更加努力,因为他们需要授权才能获得推文等信息。但是,Tumblr不需要授权。所以你可以做的是在Tumblr上发布你通过推特发布的任何更新。

然后,您可以使用带有简单URL的Tumblr Web API轻松访问此信息,如下所示

http://username.tumblr.com/api/read/json?num=25

这将返回长度为25的Feed,然后您可以使用NSJSONSerialization进行解析,以使其成为NSDictionary格式,无论您希望如何,都可以轻松处理。