144 lines
3.2 KiB
JavaScript
144 lines
3.2 KiB
JavaScript
/************************************************/
|
|
/* IPB3 Javascript */
|
|
/* -------------------------------------------- */
|
|
/* ips.facebook.js - Facebook SDK functionality */
|
|
/* (c) IPS, Inc 2012 */
|
|
/* -------------------------------------------- */
|
|
/* Author: Matt Mecham */
|
|
/************************************************/
|
|
|
|
var _facebook = window.IPBoard;
|
|
|
|
_facebook.prototype.facebook = {
|
|
|
|
appId: '',
|
|
extendedPerms: 'email,user_status,publish_actions',
|
|
|
|
/* ------------------------------ */
|
|
/**
|
|
* Constructor
|
|
*/
|
|
init: function()
|
|
{
|
|
Debug.write("Initializing ips.facebook.js");
|
|
|
|
document.observe("dom:loaded", function()
|
|
{
|
|
if ( ! $('fb-root') )
|
|
{
|
|
$('ipboard_body').insert( new Element( 'div', { 'id': 'fb-root' } ) );
|
|
}
|
|
} );
|
|
},
|
|
|
|
/* ! load */
|
|
/**
|
|
* Manually run to pass through appID, sets up JS
|
|
*/
|
|
load: function( appId )
|
|
{
|
|
ipb.facebook.appId = appId;
|
|
|
|
/* Load Facebook JS */
|
|
ipb.facebook.asyncInit();
|
|
},
|
|
|
|
/* ! asyncInit */
|
|
/**
|
|
* Loads up JS and inits Facebook JS
|
|
*/
|
|
asyncInit: function()
|
|
{
|
|
ipb.facebook.loadFacebookJs();
|
|
|
|
window.fbAsyncInit = function()
|
|
{
|
|
FB.init(
|
|
{
|
|
appId : ipb.facebook.appId,
|
|
channelUrl : ipb.vars['board_url'] + 'interface/facebook/channel.php', // Channel File
|
|
status : true, // check login status
|
|
cookie : true, // enable cookies to allow the server to access the session
|
|
xfbml : true, // parse XFBML
|
|
version : 'v2.1'
|
|
} );
|
|
};
|
|
},
|
|
|
|
/* ! connectNow */
|
|
/* Connects logged in user account to Facebook if not logged in
|
|
*/
|
|
connectNow: function()
|
|
{
|
|
/* Already connected? */
|
|
if ( ipb.vars['fb_uid'] == 0 )
|
|
{
|
|
FB.login( function( response )
|
|
{
|
|
if ( response.authResponse )
|
|
{
|
|
var access_token = FB.getAuthResponse()['accessToken'];
|
|
|
|
Debug.write('Access Token = '+ access_token);
|
|
|
|
/* Check we're all here and accounted for */
|
|
FB.api('/me', function( response )
|
|
{
|
|
Debug.dir( response );
|
|
var url = ipb.vars['base_url'] + 'app=core&module=ajax§ion=facebook&do=storeFacebookAuthDetails&secure_key=' + ipb.vars['secure_hash'];
|
|
|
|
new Ajax.Request( url,
|
|
{
|
|
method: 'post',
|
|
parameters: { 'accessToken': access_token, 'userId': response['id'] },
|
|
hideLoader: true,
|
|
onSuccess: function(t)
|
|
{
|
|
/* Nothing needed here, just return correct ID */
|
|
ipb.vars['fb_uid'] = response['id'];
|
|
|
|
return ipb.vars['fb_uid'];
|
|
}
|
|
});
|
|
|
|
} );
|
|
}
|
|
else
|
|
{
|
|
Debug.log('User Canceled');
|
|
}
|
|
|
|
}, {scope: ipb.facebook.extendedPerms } );
|
|
}
|
|
else
|
|
{
|
|
return ipb.vars['fb_uid'];
|
|
}
|
|
},
|
|
|
|
/* ! loadFacebookJs */
|
|
loadFacebookJs: function()
|
|
{
|
|
var js, id = 'facebook-jssdk';
|
|
var d = document;
|
|
|
|
if ( $( id ) )
|
|
{
|
|
return;
|
|
}
|
|
|
|
js = d.createElement('script');
|
|
|
|
js.id = id;
|
|
|
|
js.async = true;
|
|
|
|
js.src = "//connect.facebook.net/en_US/sdk.js";
|
|
|
|
d.getElementsByTagName('head')[0].appendChild(js);
|
|
|
|
}
|
|
|
|
};
|
|
|
|
ipb.facebook.init(); |