I was stuck regarding facebook implementation through PhoneGap. Though Phonagap provides a plug-in but you need to have facebook application installed on your device and that created a question for me. So here is it with the implementation of childBrowser PhoneGap plugin and the GIGYA API.
Initial Steps
1. Do have a registered Gigya account. you will get a API KEY and the site which you are adding needs to be a valid server as you will be hosting a small html page.
2. Create a new phonegap project.
3. Implement the childBrowser Plug-I. This post helped me as I was implementing it for the first time
http://simonmacdonald.blogspot.com/2011/09/phonegap-android-childbrowser-revamp.html
4. Here is the code....
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=320; user-scalable=no" />
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<title>Child Browser Example</title>
<link rel="stylesheet" href="master.css" type="text/css" media="screen" title="no title" charset="utf-8">
<script type="text/javascript" charset="utf-8" src="phonegap-1.2.0.js"></script>
<script type="text/javascript" charset="utf-8" src="childbrowser.js"></script>
<script src="jquery-1.4.3.min.js"></script>
<script src="jquery.min.js"></script>
<script src="jquery.mobile-1.0a1.min.js"></script>
<script type="text/javascript" charset="utf-8">
function init(){
document.addEventListener("deviceready", onDeviceReady, false);
gigya.services.socialize.addEventHandlers({}, {
onLogin:DisplayEventMessage,
onConnectionAdded:DisplayEventMessage,
onConnectionRemoved:DisplayEventMessage
}
);
}
function DisplayEventMessage(eventObj) {
alert(eventObj.eventName + " event happened");
}
function onDeviceReady() {
alert("PhoneGap is ready");
}
function locationChanged(newurl)
{
//alert("The JS got this url = " + newurl);
console.log(newurl);
var access=newurl.split("#");
var token=access[1].split("=");
//alert(token[0]);
if(token[0]=="access_token")
{
//Status URL...Through which status on facebook will be set
var statusurl="https://socialize.gigya.com/socialize.setStatus?status=welcome&oauth_token="+token[1];
//window.open(statusurl);
localStorage.accessToken=token[1];
window.plugins.childBrowser.close();
window.location="Messages.html";
console.log(statusurl);
function openNew(statusurl)
{
alert(statusurl);
window.plugins.childBrowser.openExternal(statusurl);
}
function closed() {
alert("The JS got a close event");
}
function showPage(locbar) {
window.plugins.childBrowser.onLocationChange = locationChanged;
window.plugins.childBrowser.onClose = closed;
var url="https://socialize.gigya.com/socialize.login?client_id=yourGigyaAPIKEY&redirect_uri=http:yourSite/yourPage.html&x_provider=facebook&response_type=token";
showBrowser(url,locbar);
}
function showBrowser(url,locbar)
{
window.plugins.childBrowser.showWebPage(url, {showLocationBar: locbar});
}
</script>
</head>
<body onload="init()" id="stage" class="theme">
<a href="#" class="btn large" onclick="showPage(true); return false;">Login to Facebook</a></p>
</body>
</html>
So, thats it.. you don't need to have a facebook app installed on your device..
Will come up with more things on this.
Any suggestions gracefully accepted....
Initial Steps
1. Do have a registered Gigya account. you will get a API KEY and the site which you are adding needs to be a valid server as you will be hosting a small html page.
2. Create a new phonegap project.
3. Implement the childBrowser Plug-I. This post helped me as I was implementing it for the first time
http://simonmacdonald.blogspot.com/2011/09/phonegap-android-childbrowser-revamp.html
4. Here is the code....
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=320; user-scalable=no" />
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<title>Child Browser Example</title>
<link rel="stylesheet" href="master.css" type="text/css" media="screen" title="no title" charset="utf-8">
<script type="text/javascript" charset="utf-8" src="phonegap-1.2.0.js"></script>
<script type="text/javascript" charset="utf-8" src="childbrowser.js"></script>
<script src="jquery-1.4.3.min.js"></script>
<script src="jquery.min.js"></script>
<script src="jquery.mobile-1.0a1.min.js"></script>
<script type="text/javascript" charset="utf-8">
function init(){
document.addEventListener("deviceready", onDeviceReady, false);
gigya.services.socialize.addEventHandlers({}, {
onLogin:DisplayEventMessage,
onConnectionAdded:DisplayEventMessage,
onConnectionRemoved:DisplayEventMessage
}
);
}
function DisplayEventMessage(eventObj) {
alert(eventObj.eventName + " event happened");
}
function onDeviceReady() {
alert("PhoneGap is ready");
}
function locationChanged(newurl)
{
//alert("The JS got this url = " + newurl);
console.log(newurl);
var access=newurl.split("#");
var token=access[1].split("=");
//alert(token[0]);
if(token[0]=="access_token")
{
//Status URL...Through which status on facebook will be set
var statusurl="https://socialize.gigya.com/socialize.setStatus?status=welcome&oauth_token="+token[1];
//window.open(statusurl);
localStorage.accessToken=token[1];
window.plugins.childBrowser.close();
window.location="Messages.html";
console.log(statusurl);
}
}function openNew(statusurl)
{
alert(statusurl);
window.plugins.childBrowser.openExternal(statusurl);
}
function closed() {
alert("The JS got a close event");
}
function showPage(locbar) {
window.plugins.childBrowser.onLocationChange = locationChanged;
window.plugins.childBrowser.onClose = closed;
var url="https://socialize.gigya.com/socialize.login?client_id=yourGigyaAPIKEY&redirect_uri=http:yourSite/yourPage.html&x_provider=facebook&response_type=token";
showBrowser(url,locbar);
}
function showBrowser(url,locbar)
{
window.plugins.childBrowser.showWebPage(url, {showLocationBar: locbar});
}
</script>
</head>
<body onload="init()" id="stage" class="theme">
<a href="#" class="btn large" onclick="showPage(true); return false;">Login to Facebook</a></p>
</body>
</html>
So, thats it.. you don't need to have a facebook app installed on your device..
Will come up with more things on this.
Any suggestions gracefully accepted....
can you show more about that small html page hosted in valid server? Sorry for the Silly question Im just a begginer in PhoneGap and having issue implementing Gigya.
ReplyDelete