Extension:FBConnect

From MediaWiki.org

Jump to: navigation, search

               

Manual on MediaWiki Extensions
List of MediaWiki Extensions
Crystal Clear action run.png
Facebook Connect

Release status: beta

FBConnect logo.png
Implementation  User identity, Parser extension, Tag, Special page, Notify
Description Facebook Connect Mediawiki Integration
Author(s)  Garrett Brown (gbruinTalk)
Last Version  r90 (2009-02-27)
MediaWiki  1.14alpha
License GPLv2
Download SourceForge tarball

View Changelog
Browse SVN
SVN Download

check usage (experimental)



The FBConnect extension for MediaWiki replaces the login functionality with Facebook Connect. This extension was developed on MediaWiki 1.14alpha. Backwards compatibility with MW-1.13.3 is unverified/untested, but might still work. For now, this extension should be used for experimental and testing purposes. Speaking of which, I need help testing and developing! I have set up a SourceForge repository for this extension. If you can contribute anything (feedback, code, patches, ideas, encouragement ;-), error messages & circumstances surrounding those errors) then let me know.

Oh wait, this is a wiki... just hit that little [edit] button up in the corner and scribe it here!


Contents

[edit] Status

As of February 11, the developer has taken a break to focus on college midterms and finals. Development will resume over spring break (end of March). If anyone would like to pick up the slack until then, go crazy! Feel free to email the developer at gbruin (at) ucla (dot) edu.

Feb. 27 - Temporary return from hiatus to update PHP facebook-client to the newest version pushed out 2 days ago. Don't expect much more til mid-March!


[edit] Features

  • "Single Sign On" experience via Facebook Connect
  • On a successful Connect, creates a new wiki user and fills in Real Name from Facebook
  • The form of the created user name can be defined by $fbUserName
  • Logging out of Facebook logs you out of the wiki and vice versa
  • Links to Facebook Connect user pages are distinguished by a Facebook icon
  • Account merging functionality (soon to come)
  • And more...


[edit] Special:Connect

This special page gives the user the choice of using Facebook Connect or logging in with a wiki account. If the user logs in with an account on the wiki, they will have the option to Connect their account with Facebook. When this feature is finished, it will allow existing wiki users to merge their account with Facebook Connect. Until then, see Extension:Renameuser or Extension:User Merge and Delete. When Connected, the special page looks like this:


[edit] Connect account with Facebook

This wiki is enabled with Facebook Connect, the next evolution of Facebook Platform. This means that when you are Connected, in addition to the normal benefits you see when logging in, you will be able to take advantage of some extra features...

Convenience Facebook Markup Language Communication

Connected users are automatically logged you in. If permission is given, then this wiki can even use Facebook as an email proxy so you can continue to receive important notifications without revealing your email address.

Facebook has provided a bunch of built-in tags that will render dynamic data. Many of these tags can be included in wiki text, and will be rendered differently depending on which Connected user they are being viewed by.

Facebook Connect ushers in a whole new level of networking. See which of your friends are using the wiki, and optionally share your actions with your friends through the Facebook News Feed.


Welcome Facebook Connect user.png
Logout of Facebook.png


[edit] User Rights from Facebook Group

Instead of using the built-in special pages to manage user rights, this extension enables users to manage rights using a Facebook group. By simply creating a group and providing the group ID, Connected users will automatically be promoted to any of three implicit groups:

  • Group member: This right will be attached to people belonging to the Facebook group or "awaiting reply."
  • Group officer: Making someone an officer of the group will automatically give them Bureaucrat rights.
  • Group admin: Likewise, admins of the Facebook group will inherit Sysop rights on the wiki.

A fourth group is also provided: Facebook Connect user. As is evident from the Mouseover ToolTips picture below, all accounts created by Facebook Connect belong to this group.

[edit] Mouseover Tooltips for Connected Users

Mouseover ToolTips

Seven random numbers were way too fugly and it was impossible to keep track of who was who. Using the Tooltips with JavaScript library, Facebook-styled DHTML tooltips display info about the user you are mousing-over. Currently, profile pics and the real name are displayed for Connected users. Eventually, these tooltips will be modified to contain additional information (perhaps nickname, Facebook networks, other info or group membership).


[edit] XFBML

XFBML in wiki text is enabled by default. Non-secure tags and attributes are excluded from the final page output. Due to a bug in MediaWiki, the facebook-logo attribute of <fb:profile-pic> is also dropped from the final page output. Applying the patch posted to this bug report resolves this error. Hopefully the patch will be included in MediaWiki's code in the future.

If XFBML is enabled, then <fb:photo> maybe be used as a replacement for $wgAllowExternalImages with the added benefit that all photos are screened against Facebook's Code of Conduct and subject to dynamic privacy

Note: previously a security vulnerability was present in this feature due to onclick attributes. As such, this feature was originally intended for internal wikis only. This was not actually a security hole in XFBML. XFBML markup is on the page of the MediaWiki site, not on Facebook's page as was the case for FBML. The worst that could have happened is that a malicious user could have imitated another user on the wiki. In no way can the other user's Facebook account be compromised. This issue is now confirmed to be fixed.


[edit] Coming Soon (probably in this order...)

  • Publish Feed story dialog when saving a wiki page (opt in or a PHP setting)
  • Proxied Email instead of requiring users to enter an email
  • Entire preferences tab overhaul (This may suck to code)


[edit] Configuration parameters

This extension's configuration parameters are defined in config.sample.php. In production, this file should be renamed to config.php. The following configuration variables can be set in config.php:

[edit] $fbApiKey

To use Facebook Connect you will first need to get a Facebook API Key:

  1. Visit the Facebook application creation page: http://www.facebook.com/developers/createapp.php
  2. Enter a descriptive name for your wiki in the Application Name field. This will be seen by users when they sign up for your site.
  3. Accept the Facebook Terms of Service.
  4. Upload icon and logo images. The icon appears in News Feed stories and the logo appears in the Connect dialog when the user connects with your application.
  5. Click Submit.
  6. Copy the displayed API key and application secret into the config file.
Default value: 'YOUR_API_KEY' - Change this!

[edit] $fbApiSecret

Default value: 'YOUR_SECRET' - Change this!

[edit] $fbCallbackURL

This is the application's callback URL (the location where index.php resides). Make sure it's your exact root - facebook.com and www.facebook.com are different.

Set the callback URL in your developer app to match the one you specify in the config file. This is important so that the Javascript cross-domain library works correctly.

Note that each callback URL needs its own app id.

Default value: 'http://www.example.com/callback/w/' - Change this!

[edit] $fbBaseURL

This is the root of the facebook site you'll be hitting. In production this will be facebook.com. However, Facebook Connect has now been released and changing this value seems to invalidate the code. Maybe in the future?

Default value: 'connect.facebook.com'

[edit] $fbFeedBundleId

This is currently unused! Hopefully, someday it will be implemented. The feed story template needs to be registered with your app_key, and then just passed at run time. To register the feed bundle for your app, visit http://www.yourwiki.com/path_to_extensions/FBConnect/register_feed_forms.php.

NOTE: This feature is currently unimplemented.

Default value: 99999999 - Change this if you're brave enough to register a form feed, I definitely am not.

[edit]

Location of the 16x16 Facebook logo. You can copy this to your server if you want. It replaces the user icon that appears near the Facebook ID usernames.

Default value: 'http://static.ak.fbcdn.net/images/icons/favicon.gif' - Can also be set to false

[edit] $fbUserName

This will be the form of the Facebook user's name when the user Connects and an account is automatically created. The first letter will of course be capitalized, and '_' converted to spaces. The user's Facebook ID takes place of the #. If no # is used, then the Facebook ID will be appended onto this string to form the user name. To check if $fbUserName meshes with your current wiki setup, set $fbCheckUserNames to true.

NOTE: As of r87, anything other than '' may currently cause tooltips have minor display problems, like tooltips and the Facebook logo failing to show up on the page.

Default value: '' (Unless your wiki is a new installation or has a small user base, I recommend 'FB ' or '#-fb', e.g.)

[edit] $fbCheckUserNames

This feature checks for user name conflicts between existing user names in the database and user names that could be generated for Facebook Connect users. To enable this feature, uncomment the line and set it equal to true.

Default value: # commented out

[edit] $fbAllowOldAccounts

Allows non-Connected user accounts to login. Set this to true to allow users to continue logging into your site with old-style user names.

Default value: true (false is currently untested)

[edit] $fbConnectOnly

Disables new account creation. If this is set, then accounts can only be created by a successful Connection.

Default value: true (false is currently untested)

[edit] $fbUseMarkup

Allows the use of XFBML in wiki text.

Default value: true

[edit] $fbAllowFacebookImages

If XFBML is enabled, then <fb:photo> maybe be used as a replacement for $wgAllowExternalImages with the added benefit that all photos are screened against Facebook's Code of Conduct and subject to dynamic privacy. To disable just <fb:photo> tags, set this to false.

Default value: true

[edit] $fbUserRightsFromGroup

For easier wiki rights management, create a group on Facebook and place the group ID here. Three new implicit groups will be created: fb-groupie, fb-officer, and fb-admin. By default, they map to User, Bureaucrat and Sysop privileges, respectively. Users will automatically be promoted or demoted when their membership, title or admin status is modified from the group page within Facebook. See #User Rights from Facebook Group.

Default value: false

[edit] $fbRemoveUserTalkLink

Set this to true to remove the link to a user's talk page in the personal toolbar (the menu in the upper right).

Default value: true

[edit] $wgShowIPinHeader

This value will automatically be set to false in config.sample.php. It removes the link to the user's IP address when they are not logged in, so that only the Facebook Connect logo will be displayed. See Manual:$wgShowIPinHeader.

Default value: true



[edit] Installation

Per usual, to install this extension add the following to LocalSettings.php:

require_once("$IP/extensions/FBConnect/FBConnect.php");


[edit] See also