The new Cosmic dashboard is now available in private beta 🎉
Get it now →

Enabling Twitter Search in Cosmic

Community Articles
Community Articles Enabling Twitter Search in Cosmic

TL;DR
Install the Twitter Search Extension
View Source Code


Intro

In this article, we will walk through how to build a Cosmic Extension that can search and embed a Twitter timeline in our dashboard, and save selected Tweets from the timeline to our Bucket.  We will utilize a couple of Twitter APIs to build our customized Twitter search API for our extension. This Cosmic Extension greatly simplifies the workflow for developers who need to embed Tweets into their websites based on dynamic Twitter search queries.


Get Twitter consumer key and consumer secret 

To be able to use the Twitter APIs, we need to have a copy of Twitter consumer key and consumer secret. To retrieve these, log into your Twitter account, then go to apps.twitter.com and apply for a developer account.

After getting approval from Twitter, create a new application in your developer account and fill out this form:

Next, Twitter will generate your consumer key and secret which are displayed under 'Details' tab. Keep these since we will use them to implement our own search API. 


Implement Twitter Authentication 

Anyone who uses our Cosmic Twitter Extension needs to sign in Twitter to be authenticated. Twitter uses oAuth 1.0 for authentication and authorization. Our extension redirects our users to a Twitter sign in and consent popup page. Upon our users' successful login to Twitter and consenting Cosmic to send Twitter APIs on their behalf, users will be returned to the dashboard and able to perform Twitter search.     


Develop our customized Twitter search API

As we mentioned above, Twitter does not provide an API for searching and embedding search results. We will develop our own customized API by using the combination of two APIs provided by Twitter. The two Twitter APIs that will become our building blocks are:

1, Twitter search API that gets a list of relevant Tweets matching a search query, in JSON.

Example from Twitter API documentation:  

2, API for getting the HTML of a Tweet given its author and Tweet ID, ready to be embedded on a website. 

Example from Twitter documentation: 

 

The basic idea is to use the Twitter search API to get a list of Tweets in JSON. The results return from the Twitter search API does not contain the HTML of the Tweets, so we cannot directly embed the search results into Cosmic. This is where the second Twitter API comes into play. For each Tweet returned from the first API, we extract its author ID and Tweet ID, and use these information to invoke the second API to get its HTML. Here is the code: 


The rest is straightforward. We can now invoke our own search API from the browser and embed the results that are just a list of HTML blocks in Cosmic. A Tweet Object only has one Metafield which is “html-textarea” type. Invoke the relevant Cosmic APIs to add or delete Tweet Object Type and Tweet Objects in Cosmic dashboard. If you have any doubts of how to use the Cosmic APIs, please check out the Cosmic API documentation. 

Conclusion
I hope you found this tutorial helpful in demonstrating how Cosmic Extensions allow you to extend the power of your Cosmic Bucket and communicate with third-party APIs like Twitter. Join the conversation on the Cosmic Slack channel and reach out to Cosmic on Twitter.

You may also like


This article shows you how to create a blazing fast Gridsome blog using Cosmic source plugin. Let’s get started.
In this blog we'll quickstart a React Native Cross-Platform Blog using the Cosmic CLI. This app is three apps in one: Web, iOS and Android app all with content powered by Cosmic. Go to the GitHub repo to see the iOS and Android app share the same React Native codebase.
Cosmic lets you build one-to-one as well as one-to-many Object Relationships within your Bucket Dashboard. To help you and your team manage content more seamlessly, you can now see your Connected Objects located on the Object’s Edit page in the Dashboard.
Filtering data is one of the most common feature of any data facing application, wheather it's a fron-end app or a back-end application. The Filter function is used to find records in a table or a dataset that meets certain criteria.
In this Guide, I’m going to show you how Imgix Extension will provide optimized images for your application. Will also talk about the benefits, and show you how to install it to your Bucket in a few clicks.
Next.js is a React framework for building hybrid applications. It's flexible, extensible, and works great with any data provider. In this tutorial, we'll show how to get started with Cosmic CMS and Next.js.

Get started with Cosmic

Personal projects are free. Scale up as you grow.
Start building Talk to sales