A WebFinger server for Facebook and Twitter.
Python
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
django-salmon @ f8faf7f
python-dateutil @ 2cfb879
static
templates
tweepy_submodule @ 517a0f2
webutil @ cc38bf6
.gitignore
.gitmodules
README.md
alltests.py
app.py
app.yaml
app.yaml.facebook
app.yaml.twitter
appengine_config.py
dateutil
django_salmon
tweepy
user.py
user_test.py

README.md

webfinger-unofficial Webfinger

About

This is a WebFinger server for Facebook and Twitter. It's deployed at these endpoints:

http://facebook-webfinger.appspot.com/
http://twitter-webfinger.appspot.com/

It's part of a suite of projects that implement the OStatus federation protocols for the major social networks. The other projects include activitystreams-, portablecontacts-, salmon-, and ostatus-unofficial.

Google isn't included because it already provides a WebFinger server for Google accounts at gmail.com.

License: This project is placed in the public domain.

Using

This simply implements the WebFinger protocol using Facebook's and Twitter's OAuth authentication and APIs. To use it, just point your WebFinger client code at the endpoints above.

If your client consumes arbitrary email addresses, you'll need to hard-code exceptions for facebook.com and twitter.com and redirect HTTP requests to these endpoints. (The user URI may use either domain, e.g. snarfed.org@facebook.com or snarfed.org@facebook-webfinger.appspot.com.)

Future work

This should be refactored so it can be used as a library, like activitystreams-unofficial.

We'd also love to add more sites! Off the top of my head, Yahoo, Microsoft, Amazon, Apple's iCloud, Instagram, WordPress.com, and Sina Weibo would be good candidates. If you're looking to get started, implementing a new site is a good place to start. It's pretty self contained and the existing sites are good examples to follow, but it's a decent amount of work, so you'll be familiar with the whole project by the end.

Development

Pull requests are welcome! Feel free to ping me with any questions.

Most dependencies are included as git submodules. Be sure to run git submodule init after cloning this repo.

You can run the unit tests with ./alltests.py. They depend on the App Engine SDK and mox, both of which you'll need to install yourself.

Note the app.yaml.* files, one for each App Engine app id. To work on or deploy a specific app id, symlink app.yaml to its app.yaml.xxx file. Likewise, if you add a new site, you'll need to add a corresponding app.yaml.xxx file.

To deploy:

rm -f app.yaml && ln -s app.yaml.twitter app.yaml && \
  ~/google_appengine/appcfg.py --oauth2 update . && \
rm -f app.yaml && ln -s app.yaml.facebook app.yaml && \
  ~/google_appengine/appcfg.py --oauth2 update .