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.
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
.)
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.
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 .