WordPress: Keyring Developer’s Guide

Download Keyring from the WordPress.org Plugin Repository.

Keyring is a generalized framework for WordPress which handles authentication with, and authenticated requests to remote services. It provides a set of predefined “Services” which describe how to communicate with a collection of popular platforms, and also makes it easy for you to plug into that framework and define your own Services for other systems.

Written as a plugin for WordPress, Keyring may be run in “headless” mode to provide completely white-labeled authentication/communication functionality, or with a simple UI to allow users to manage their connections. On its own, Keyring does not “do” anything useful for an end user. It is built purely with the developer in mind, to make your life easier when integrating with other services. Using Keyring means you no longer need to care about OAuth or HTTP Basic, or how to sign requests or anything else — you request a secure connection from Keyring and if one is available, you will be provided with a simple, standard way of talking to that service. If there is no connection available, then the user will be taken through any authorization process and then the finalized connection will be returned to your plugin upon completion.

In this documentation, we’ll look at the architecture of Keyring, how the pieces work together and how you can extend Keyring by writing your own Services and Token Stores, plus implementing it as the authentication/communication layer in your own plugins/themes.

Tell Me What You Think

  1. Ryan said:

    awesome! i’ve been working on a similar project for a while. it imports your posts and other content from facebook, twitter, etc. into blogging platforms like wordpress, tumblr, and blogger. it doesn’t dive as deeply into wordpress in particular, but trades that for breadth across the other destination platforms.

    https://github.com/snarfed/freedom

    it uses another project, https://github.com/snarfed/activitystreams-unofficial , to translate the data from each source platform to a common format (ActivityStreams), before converting it again to each destination format.

    i’m glad to see more people working on these kinds of IndieWeb projects!

    • Beau said:

      Nice work Ryan! I was involved with the ActivityStreams spec team way back when, so have been interested in this stuff for a while :)

      I see you’ve done some work on pulling in comments/conversation happening around your content on other networks as well — I’ll be looking at doing that with Keyring/my importers at some point.

      Stay in touch!