چگونه برنامه هاي کاربردي تان را در Google Apps MarketPlace به فروش برسانيد
چگونه برنامه هاي کاربردي تان را در Google Apps MarketPlace به فروش برسانيد
چگونه برنامه هاي کاربردي تان را در Google Apps MarketPlace به فروش برسانيد
در حال حاضر بيش از 2 ميليون شرکت تجاري، مشغول استفاده از Google Apps هستند و هر روز نيز 3000 شرکت تجاري ديگر براي استفاده از اين برنامه کاربردي ثبت نام مي کنند. ما در اين مقاله به شما نشان خواهيم داد که چگونه برنامه ي کاربردي تحت وب خود را در Google Apps Marketplace ليست کنيد تا ساير شرکت هاي تجاري بتوانند با يک کليک ساده به آن دسترسي پيدا کنند. در اين مقاله من Google Apps Marketplace را براي شما تشريح خواهم کرد و به شما خواهم گفت که چگونه مي توانيد با فروش برنامه ي کاربردي تان، از طريق آن درآمد کسب کنيد. در نيمه ي دوم اين مقاله، به توصيف دو کد نمونه خواهم پرداخت: يک برنامه ي کاربردي ساده ي Hello World و يک مثال که به شما نشان مي دهد چگونه برنامه ي کاربردي فعلي خود را براي فروش بر روي Marketplace بهينه سازي و آماده کنيد.
Google Apps Marketplace، فعاليت هاي تجاري را که به برنامه هاي کاربردي خاص نياز دارند به برنامه نويساني که اين برنامه ها را فرGoogle Apps Marketplace، فعاليت هاي تجاري را که به برنامه هاي کاربردي خاص نياز دارند به برنامه نويساني که اين برنامه ها را فراهم مي کنند، پيوند مي زند. فعاليت هاي تجاري مي توانند برنامه هاي کاربردي جديد را پيدا کنند، با چند کليک اين برنامه ها را خريداري نمايند و از آن ها در داخل Google Apps فعلي خود بهره برداري کنند. برنامه نويسان برنامه هاي کاربردي، برنامه هاي خود را در دسترس 3 ميليون فعاليت تجاري قرار مي دهند و از فرآيند نصب ساده و آسان Marketplace بهره مي برند. (شکل 1)
اولين گام در انتشار يک برنامه ي کاربردي، ايجاد يک حساب vendor در Marketplace و اضافه کردن يک Marketplace Listing براي برنامه ي کاربردي مورد نظر است. اين ليست، دربردارنده ي تمام جزئيات مربوط به برنامه ي کاربردي شما که در price, videos, screeshots, customer testimonials, Marketplace {md}name, اولين گام در انتشار يک برنامه ي کاربردي، ايجاد يک حساب vendor در Marketplace و اضافه کردن يک Marketplace Listing براي برنامه ي کاربردي مورد نظر است. اين ليست، دربردارنده ي تمام جزئيات مربوط به برنامه ي کاربردي شما که در price, videos, screeshots, customer testimonials, Marketplace {md}name, category و غيره نمايش داده مي شود، خواهد بود. اين ليست همچنين شامل يک manifest که يک فايل XML حاوي آدرس وب برنامه ي کاربردي شما و ليستي از هر نوع مجوز اضافي مورد نياز برنامه ي کاربردي (نظير مجوز براي خواندن يا نوشتن تقويم کاربر)، مي شود.
1) براي اجراي مثال PHP، به صفحه ي PHP example page برويد و فايل زيپ شده اي که شامل تمام کتاب خانه ها و کدهاي مورد نياز براي اين مثال است را دانلود کنيد. فايل زيپ را بر روي يکي از دايرکتوري هاي سرور وب خود که مي تواند اسکريپت هاي php نسخه ي 4، 5، 2 يا بالاتر را اجرا کند، باز نمائيد.
2) يک app listing جديد ايجاد کنيد. در Marketplace به پروفايل خود برويد (اگر از قبل پروفايل نداريد يکي ايجاد کنيد) و برروي دکمه ي Creat new listing کليک کنيد. در جعبه ي متني Manifest، فايل manifest.xml.orig را از فايل زيپ شده ي paste کنيد و لينک هاي Navigation Link و Single sign-on را براي اشاره به آدرس برنامه ي کاربردي Hello World بر روي سرورتان تغيير دهيد.
3) وقتي app listing را ايجاد کرديد، Marketplace اسم تمام listing هاي شما را نشان مي دهد (شکل 5).
برروي لينک View OAuth Consumer Key که در زير Hello World listing واقع شده کليک کنيد.
Consumer key و Consumer secret را از پنجره ي پائين افتادني که ظاهر مي شود کپي کنيد. اين دو مقدار را در داخل متغيرهاي مرتبط در common.php وارد کنيد.
4) متغير $ BASE_URL در common.php را طوري تنظيم کنيد که به دايرکتوري وب برنامه ي کاربردي ارجاع بدهد.
5) اگر از قبل يک حساب Google Apps نداريد، يکي ايجاد کنيد.
6) به پروفايل خود برويد و بر روي add listing کليک کنيد. بر روي دکمه ي Add it now کليک نمائيد. اسم دامنه ي حساب Google A3) وقتي app listing را ايجاد کرديد، Marketplace اسم تمام listing هاي شما را نشان مي دهد (شکل 5).
براي باز کردن برنامه ي کاربردي بر روي آن کليک کنيد. اگر همه چيز به درستي پيش برود شما برنامه ي کاربردي Hello World را خواهيد ديد.
بخش بعدي مقاله، جزئيات لازم در مورد چگونگي کارکرد برنامه ي کاربردي Hello World را به شما نشان مي دهد.
1) index.php: وقتي کاربر در برنامه بر روي لينکي کليک مي کند، گوگل، navigation linkي را که شما در فايل manifest فراهم کرده ايد به کاربر ارسال مي کند. اين URLي بود که به فايل index.php اشاره مي کرد. کد index.php فرآيند OpenID را کنار مي زند و به گوگل مي گويد وقتي کار انجام شد return.php را به کاربر برگرداند. توجه داشته باشيد که index.php يک کتابخانه ي OpenID را فرا مي خواند که اين بدان معنا است که ما مجبور نيستيم جزئيات استاندارد OpenID پيچيده را درک کنيم.
2) return.php: وقتي فرآيند OpenID تکميل شد و کاربر توسط گوگل تائيد اعتبار شد کد موجود در return.php اجرا مي شود و هويت کاربر (oid$ ) و سه مشخصه ي او شامل: اسم، فاميل و آدرس اي-ميل او را مي خواند. سپس مقادير اين سه مشخصه را در داخل متغيرهاي نشست PHP قرار مي دهد و بنابراين ساير صفحات مي توانند آن ها را بخوانند.
3) display.php: کد display.php، متغيرهاي نشست را براي نام و آدرس ايميل مي خواند و آن ها را در صفحه ي وب قرار مي دهد. (اين صفحه ي اصلي برنامه ي شما است) و همچنين data.php را بيرون مي کشد.
4) data.php: کد data.php مثالي از يک مجتمع شدن عميق تر با Google Apps به شمار مي رود. کد درون data.php با استفاده از تائيد اعتبار OAuth و براي پي بردن به رويداد بعدي موجود در تقويم کاربر يک فراخواني Gdata به انجام مي رساند و آن را برروي صفحه ي وب نمايش مي دهد. به دليل اين که اين کد از Zend framework براي انجام اين کار سنگين استفاده مي کند، موجب مي شود تا برنامه نويسان برنامه ي کاربردي بتوانند در خواندن و کدنويسي صرفه جويي کنند.
اين برنامه که ToDoManager نام دارد، در ليست هاي ToDo مربوط به کاربر را نگه مي دارد. هر کاربر مي تواند چندين آيتم ToDo داشته باشد. من از MySQL به عنوان ذخيره ساز داده هاي برنامه استفاده کرده ام. اين برنامه دو جدول دارد (به شما گفته بودم که برنامه ي ساده اي است):
CREATE TABLE 'todo_items' (
'id' int(11) NOT NULL auto_increment,
'user_id' int(11) NOT NULL,
'description' varchar(200) NOT NULL,
PRIMARY KEY ('id')
);
CREATE TABLE 'users' (
'id' int(11) NOT NULL auto_increment
'user_name' varchar(200) NOT NULL,
'Password' varchar(200) NOT NULL,
حال که شما اصول اوليه ي چگونگي کارکرد برنامه ي کاربردي در Google Marketplace را درک کرديد، من از يک برنامه ي فوق العاده ساده به عنوان مثال استفاده مي کنم تا به شما نشان دهم چگونه برنامه ي کاربردي خود را در Marketplace قرار دهيد.
mysql_select_db(<database>,$ con);
$ sql="SELECT*FROM todo_item WHERE
User_id=".$ _SESSION['user_id'];
$ result=mysql_query ($ sql);
While ($ row=mysql_fetch_array ($ result)){
Echo $ row ['id'].":".$ row['description'];
echo "<br/>";
}
Mysql_close($ con);
?>
<body/>
</html>
• حالا ما اين برنامه ي کاربردي را با Marketplace و sign-on به گوگل مجتمع مي کنيم. مثل همه ي برنامه نويسان خوب، ما تنبل هستيم. کم ترين مقدار کدي که مجبور به جايگزين کردن آن هستيم چقدر است؟ اگر به خاطر بياوريد، ما قبلا گفتيم که صفحه ي display.php فرض مي کند که يک صفحه ي ديگر، متغير user id را ست کرده است. احتمالاً يک صفحه ي لاگ اين در برنامه ي TodoManager اين کار را انجام مي دهد. آن صفحه ي لاگ اين نام و کلمه ي عبور کاربر را سوال مي کند و سپس مقادير وارد شده را با رکوردهاي ثبت شده در جدول users مقايسه مي کند. اما کاربران Marketplace به جاي استفاده از صفحه ي لاگ اين todoManager، به خود گوگل لاگ اين مي کنند بنابراين ما احتياج داريم که گوگل به ما بگويد اين کاربر کيست. گوگل اين کار را با استفاده از OpenID به شکلي کاملاً ايمن به انجام مي رساند.
• آيا مي توانيم براي پي بردن به هويت کاربر از طريق OpenID از کد فعلي دوباره استفاده کنيم؟
بله، ما مي توانيم return.php را از برنامه ي کاربردي Hello World کپي کنيم و سپس مي توانيم اين کد را به منظور پي بردن به رکورد کاربر در جدول users، اضافه کنيم. اگر رکوردي براي کاربر وجود نداشت يک رکورد جديد براي او ايجاد و متغير user id را ست مي نمائيم. در کد زير چيزهايي که به return.php اضافه مي کنيم را با فونت درشت نمايش داده ايم:
...
If ($ response->status==Auth_OpenID_SUCCESS){
$ _SESSION ['OPENID_AUTH']=true;
$ ax=new Auth_OpenID_AX_FetchResponse();
$ data=$ ax->fromSuccessResponse($ response)->data;
$ oid=$ response->endpoint->claimed_id;
$ _SESSION['user_id']=get_or_create_user_id($ oid);
$ _SESSION['oid']=$ oid;
$ _SESSION['firstName']=
$ data['http://axschema.org/namePerson/first'][0];
$ _SESSION['lastName']=
$ data['http:://axschema.org/namePerson/last'][0];
$ _SESSION['email']=
$ data['http://axschema.org/contact/email'][0];
header('Location: ' .$ BASE_URL. '/display.php');
}
...
function get_or_create_user_id($ oid){
$ user_id=-1;
$ con=mysql_connect(<host>, <user>, <password>)};
mysql_select_db(<database>,$ con);
$ sql="SELECT id FROM users WHERE users_name=""$ oid."";
$ result=mysql_query($ sql);
if ($ row=mysql_fetch_array($ result)){
$ user_id=$ row['id'];
}
else{
$ sql='INSERT INTO users (user_name, password)
VALUES("".$ oid."",")";
$ result=mysql_query($ sql);
$ sql="SELECT id FROM users WHERE user_name="".$ oid."";
$ result=mysql_query($ sql);
$ row=mysql_fetch_array($ result);
$ user_id=$ row['id'];
}
mysql_close($ con);
return $ user_id;
}
به منظور اين که ToDoManager بتواند با single sign-on گوگل کار کند، همه ي کاري که بايد انجام دهيم اين است:
1) index.php, commom.php و return.php را (با تغييراتي که قبلاً در اين بخش توضيح داديم) از برنامه ي کاربردي Hello World به داخل برنامه ي کاربردي ToDoManager کپي کنيد.
2) يک app listing براي ToDoManager ايجاد کنيد، درست به همان شکلي که براي Hello World انجام داده بوديم.
اولاً، استفاده از ID فراهم شده توسط OpenID بسيار ايمن تر است. دوما، آدرس هاي ايميل ممکن است recycle شده باشند و به افراد جديدي اشاره کنند. همچنين ممکن است کاربران آدرس هاي ايميل خود را به منظور به نمايش گذاشتن اسم فاميل جديد خود؛ مثلاً بعد از ازدواج تغيير دهند. اما ID فراهم آمده توسط OpenID هميشه به يک شکل باقي مي ماند.
• IDهايي که توسط سرورهاي OpenID گوگل فراهم مي آيند چه شکلي هستند؟
در مورد من، اين ID به شکل زير است:
http://dragonarg.com/openid?id=X
که در آن X، يک عدد 21 رقمي است. اين عدد براي من در داخل اين دامنه منحصر به فرد و اختصاصي است و هرگز تغيير نخواهد کرد، فرقي نمي کند که من چند بار log in و log out کنم.
اولين بخش، dragonrag.com دامنه اي که من برنامه ي کاربردي را بر روي آن نصب کرده ام است. به عنوان يک توسعه دهنده، شما هرگز نبايد چيزي را در مورد فرمت ID در نظر بگيريد. فقط کافي است مطمئن شويد که يک فيلد گسترده ي varchar در بانک اطلاعاتي خود براي ذخيره کردن آن در اختيار داريد!
کدي2) يک app listing براي ToDoManager ايجاد کنيد، درست به همان شکلي که براي Hello World انجام داده بوديم.
به منظور مجتمع شدن با Calendar يا ساير داده هاي Google Apps، ما به consumer key و consumer secret کاربر به منظور دسترسي به APIهاي گوگل داريم. در Hello World اين آيتم ها در common.php ست مي شوند. اين نکته مهم است که آن ها بايد محرمانه حفظ شوند بنابراين در يک برنامه ي کاربردي واقعي شما بايد آن ها را در يک محل امن تر نظير فايلي با دسترسي محدود پنهان کنيد.
برنامه ي کاربردي بايد شامل يک صفحه ي لاگ اين محلي باشد تا کاربر به جاي اين که از طريق يک صفحه ي Google Apps وارد شود مستقيما به ToDoManager برود. اگر کاربر تلاش کند به صفحه اي در برنامه ي کاربردي شما دسترسي يابد و متغير نشست user id را تنظيم نکرده باشد، برنامه ي کاربردي شما بايد او را به اين صفحه ي Log in که فرآيند OpenID را آغاز مي کند، هدايت نمايد. در برنامه ي کاربردي Hello World، فايل Login.php صفحه ي ويژه ي Log in محسوب مي شود.
اگر بخواهيد قبل از اين که Google Billing API راه اندازي شود از کاربران پول دريافت کنيد، مجبور هستيد خودتان نحوه ي پرداخت را اداره و مديريت کنيد. شما مي توانيد يک لينک ست آپ به mainfest برنامه ي کاربردي اضافه کنيد تا بدين ترتيب adminهايي که برنامه ي کاربردي را نصب مي کنند بتوانند به صفحه ي ست آپ سرور شما يعني جايي که مي توانيد اطلاعات مربوط به پرداخت را جمع آوري کنيد هدايت شوند.
منبع: ماهنامه ي کامپيوتري بزرگراه رايانه، شماره ي 136.
Google Apps Marketplace چيست؟
Google Apps Marketplace، فعاليت هاي تجاري را که به برنامه هاي کاربردي خاص نياز دارند به برنامه نويساني که اين برنامه ها را فرGoogle Apps Marketplace، فعاليت هاي تجاري را که به برنامه هاي کاربردي خاص نياز دارند به برنامه نويساني که اين برنامه ها را فراهم مي کنند، پيوند مي زند. فعاليت هاي تجاري مي توانند برنامه هاي کاربردي جديد را پيدا کنند، با چند کليک اين برنامه ها را خريداري نمايند و از آن ها در داخل Google Apps فعلي خود بهره برداري کنند. برنامه نويسان برنامه هاي کاربردي، برنامه هاي خود را در دسترس 3 ميليون فعاليت تجاري قرار مي دهند و از فرآيند نصب ساده و آسان Marketplace بهره مي برند. (شکل 1)
اولين گام در انتشار يک برنامه ي کاربردي، ايجاد يک حساب vendor در Marketplace و اضافه کردن يک Marketplace Listing براي برنامه ي کاربردي مورد نظر است. اين ليست، دربردارنده ي تمام جزئيات مربوط به برنامه ي کاربردي شما که در price, videos, screeshots, customer testimonials, Marketplace {md}name, اولين گام در انتشار يک برنامه ي کاربردي، ايجاد يک حساب vendor در Marketplace و اضافه کردن يک Marketplace Listing براي برنامه ي کاربردي مورد نظر است. اين ليست، دربردارنده ي تمام جزئيات مربوط به برنامه ي کاربردي شما که در price, videos, screeshots, customer testimonials, Marketplace {md}name, category و غيره نمايش داده مي شود، خواهد بود. اين ليست همچنين شامل يک manifest که يک فايل XML حاوي آدرس وب برنامه ي کاربردي شما و ليستي از هر نوع مجوز اضافي مورد نياز برنامه ي کاربردي (نظير مجوز براي خواندن يا نوشتن تقويم کاربر)، مي شود.
1) براي اجراي مثال PHP، به صفحه ي PHP example page برويد و فايل زيپ شده اي که شامل تمام کتاب خانه ها و کدهاي مورد نياز براي اين مثال است را دانلود کنيد. فايل زيپ را بر روي يکي از دايرکتوري هاي سرور وب خود که مي تواند اسکريپت هاي php نسخه ي 4، 5، 2 يا بالاتر را اجرا کند، باز نمائيد.
2) يک app listing جديد ايجاد کنيد. در Marketplace به پروفايل خود برويد (اگر از قبل پروفايل نداريد يکي ايجاد کنيد) و برروي دکمه ي Creat new listing کليک کنيد. در جعبه ي متني Manifest، فايل manifest.xml.orig را از فايل زيپ شده ي paste کنيد و لينک هاي Navigation Link و Single sign-on را براي اشاره به آدرس برنامه ي کاربردي Hello World بر روي سرورتان تغيير دهيد.
3) وقتي app listing را ايجاد کرديد، Marketplace اسم تمام listing هاي شما را نشان مي دهد (شکل 5).
برروي لينک View OAuth Consumer Key که در زير Hello World listing واقع شده کليک کنيد.
Consumer key و Consumer secret را از پنجره ي پائين افتادني که ظاهر مي شود کپي کنيد. اين دو مقدار را در داخل متغيرهاي مرتبط در common.php وارد کنيد.
4) متغير $ BASE_URL در common.php را طوري تنظيم کنيد که به دايرکتوري وب برنامه ي کاربردي ارجاع بدهد.
5) اگر از قبل يک حساب Google Apps نداريد، يکي ايجاد کنيد.
6) به پروفايل خود برويد و بر روي add listing کليک کنيد. بر روي دکمه ي Add it now کليک نمائيد. اسم دامنه ي حساب Google A3) وقتي app listing را ايجاد کرديد، Marketplace اسم تمام listing هاي شما را نشان مي دهد (شکل 5).
براي باز کردن برنامه ي کاربردي بر روي آن کليک کنيد. اگر همه چيز به درستي پيش برود شما برنامه ي کاربردي Hello World را خواهيد ديد.
بخش بعدي مقاله، جزئيات لازم در مورد چگونگي کارکرد برنامه ي کاربردي Hello World را به شما نشان مي دهد.
برنامه ي کاربردي Hello World چگونه کار مي کند؟
1) index.php: وقتي کاربر در برنامه بر روي لينکي کليک مي کند، گوگل، navigation linkي را که شما در فايل manifest فراهم کرده ايد به کاربر ارسال مي کند. اين URLي بود که به فايل index.php اشاره مي کرد. کد index.php فرآيند OpenID را کنار مي زند و به گوگل مي گويد وقتي کار انجام شد return.php را به کاربر برگرداند. توجه داشته باشيد که index.php يک کتابخانه ي OpenID را فرا مي خواند که اين بدان معنا است که ما مجبور نيستيم جزئيات استاندارد OpenID پيچيده را درک کنيم.
2) return.php: وقتي فرآيند OpenID تکميل شد و کاربر توسط گوگل تائيد اعتبار شد کد موجود در return.php اجرا مي شود و هويت کاربر (oid$ ) و سه مشخصه ي او شامل: اسم، فاميل و آدرس اي-ميل او را مي خواند. سپس مقادير اين سه مشخصه را در داخل متغيرهاي نشست PHP قرار مي دهد و بنابراين ساير صفحات مي توانند آن ها را بخوانند.
3) display.php: کد display.php، متغيرهاي نشست را براي نام و آدرس ايميل مي خواند و آن ها را در صفحه ي وب قرار مي دهد. (اين صفحه ي اصلي برنامه ي شما است) و همچنين data.php را بيرون مي کشد.
4) data.php: کد data.php مثالي از يک مجتمع شدن عميق تر با Google Apps به شمار مي رود. کد درون data.php با استفاده از تائيد اعتبار OAuth و براي پي بردن به رويداد بعدي موجود در تقويم کاربر يک فراخواني Gdata به انجام مي رساند و آن را برروي صفحه ي وب نمايش مي دهد. به دليل اين که اين کد از Zend framework براي انجام اين کار سنگين استفاده مي کند، موجب مي شود تا برنامه نويسان برنامه ي کاربردي بتوانند در خواندن و کدنويسي صرفه جويي کنند.
يکپارچه نمودن و گنجاندن يک برنامه ي کاربردي موجود در Marketplace
اين برنامه که ToDoManager نام دارد، در ليست هاي ToDo مربوط به کاربر را نگه مي دارد. هر کاربر مي تواند چندين آيتم ToDo داشته باشد. من از MySQL به عنوان ذخيره ساز داده هاي برنامه استفاده کرده ام. اين برنامه دو جدول دارد (به شما گفته بودم که برنامه ي ساده اي است):
CREATE TABLE 'todo_items' (
'id' int(11) NOT NULL auto_increment,
'user_id' int(11) NOT NULL,
'description' varchar(200) NOT NULL,
PRIMARY KEY ('id')
);
CREATE TABLE 'users' (
'id' int(11) NOT NULL auto_increment
'user_name' varchar(200) NOT NULL,
'Password' varchar(200) NOT NULL,
حال که شما اصول اوليه ي چگونگي کارکرد برنامه ي کاربردي در Google Marketplace را درک کرديد، من از يک برنامه ي فوق العاده ساده به عنوان مثال استفاده مي کنم تا به شما نشان دهم چگونه برنامه ي کاربردي خود را در Marketplace قرار دهيد.
mysql_select_db(<database>,$ con);
$ sql="SELECT*FROM todo_item WHERE
User_id=".$ _SESSION['user_id'];
$ result=mysql_query ($ sql);
While ($ row=mysql_fetch_array ($ result)){
Echo $ row ['id'].":".$ row['description'];
echo "<br/>";
}
Mysql_close($ con);
?>
<body/>
</html>
• حالا ما اين برنامه ي کاربردي را با Marketplace و sign-on به گوگل مجتمع مي کنيم. مثل همه ي برنامه نويسان خوب، ما تنبل هستيم. کم ترين مقدار کدي که مجبور به جايگزين کردن آن هستيم چقدر است؟ اگر به خاطر بياوريد، ما قبلا گفتيم که صفحه ي display.php فرض مي کند که يک صفحه ي ديگر، متغير user id را ست کرده است. احتمالاً يک صفحه ي لاگ اين در برنامه ي TodoManager اين کار را انجام مي دهد. آن صفحه ي لاگ اين نام و کلمه ي عبور کاربر را سوال مي کند و سپس مقادير وارد شده را با رکوردهاي ثبت شده در جدول users مقايسه مي کند. اما کاربران Marketplace به جاي استفاده از صفحه ي لاگ اين todoManager، به خود گوگل لاگ اين مي کنند بنابراين ما احتياج داريم که گوگل به ما بگويد اين کاربر کيست. گوگل اين کار را با استفاده از OpenID به شکلي کاملاً ايمن به انجام مي رساند.
• آيا مي توانيم براي پي بردن به هويت کاربر از طريق OpenID از کد فعلي دوباره استفاده کنيم؟
بله، ما مي توانيم return.php را از برنامه ي کاربردي Hello World کپي کنيم و سپس مي توانيم اين کد را به منظور پي بردن به رکورد کاربر در جدول users، اضافه کنيم. اگر رکوردي براي کاربر وجود نداشت يک رکورد جديد براي او ايجاد و متغير user id را ست مي نمائيم. در کد زير چيزهايي که به return.php اضافه مي کنيم را با فونت درشت نمايش داده ايم:
...
If ($ response->status==Auth_OpenID_SUCCESS){
$ _SESSION ['OPENID_AUTH']=true;
$ ax=new Auth_OpenID_AX_FetchResponse();
$ data=$ ax->fromSuccessResponse($ response)->data;
$ oid=$ response->endpoint->claimed_id;
$ _SESSION['user_id']=get_or_create_user_id($ oid);
$ _SESSION['oid']=$ oid;
$ _SESSION['firstName']=
$ data['http://axschema.org/namePerson/first'][0];
$ _SESSION['lastName']=
$ data['http:://axschema.org/namePerson/last'][0];
$ _SESSION['email']=
$ data['http://axschema.org/contact/email'][0];
header('Location: ' .$ BASE_URL. '/display.php');
}
...
function get_or_create_user_id($ oid){
$ user_id=-1;
$ con=mysql_connect(<host>, <user>, <password>)};
mysql_select_db(<database>,$ con);
$ sql="SELECT id FROM users WHERE users_name=""$ oid."";
$ result=mysql_query($ sql);
if ($ row=mysql_fetch_array($ result)){
$ user_id=$ row['id'];
}
else{
$ sql='INSERT INTO users (user_name, password)
VALUES("".$ oid."",")";
$ result=mysql_query($ sql);
$ sql="SELECT id FROM users WHERE user_name="".$ oid."";
$ result=mysql_query($ sql);
$ row=mysql_fetch_array($ result);
$ user_id=$ row['id'];
}
mysql_close($ con);
return $ user_id;
}
به منظور اين که ToDoManager بتواند با single sign-on گوگل کار کند، همه ي کاري که بايد انجام دهيم اين است:
1) index.php, commom.php و return.php را (با تغييراتي که قبلاً در اين بخش توضيح داديم) از برنامه ي کاربردي Hello World به داخل برنامه ي کاربردي ToDoManager کپي کنيد.
2) يک app listing براي ToDoManager ايجاد کنيد، درست به همان شکلي که براي Hello World انجام داده بوديم.
اولاً، استفاده از ID فراهم شده توسط OpenID بسيار ايمن تر است. دوما، آدرس هاي ايميل ممکن است recycle شده باشند و به افراد جديدي اشاره کنند. همچنين ممکن است کاربران آدرس هاي ايميل خود را به منظور به نمايش گذاشتن اسم فاميل جديد خود؛ مثلاً بعد از ازدواج تغيير دهند. اما ID فراهم آمده توسط OpenID هميشه به يک شکل باقي مي ماند.
• IDهايي که توسط سرورهاي OpenID گوگل فراهم مي آيند چه شکلي هستند؟
در مورد من، اين ID به شکل زير است:
http://dragonarg.com/openid?id=X
که در آن X، يک عدد 21 رقمي است. اين عدد براي من در داخل اين دامنه منحصر به فرد و اختصاصي است و هرگز تغيير نخواهد کرد، فرقي نمي کند که من چند بار log in و log out کنم.
اولين بخش، dragonrag.com دامنه اي که من برنامه ي کاربردي را بر روي آن نصب کرده ام است. به عنوان يک توسعه دهنده، شما هرگز نبايد چيزي را در مورد فرمت ID در نظر بگيريد. فقط کافي است مطمئن شويد که يک فيلد گسترده ي varchar در بانک اطلاعاتي خود براي ذخيره کردن آن در اختيار داريد!
به کارگيري ToDoManager در يک برنامه ي کاربردي واقعي
کدي2) يک app listing براي ToDoManager ايجاد کنيد، درست به همان شکلي که براي Hello World انجام داده بوديم.
به منظور مجتمع شدن با Calendar يا ساير داده هاي Google Apps، ما به consumer key و consumer secret کاربر به منظور دسترسي به APIهاي گوگل داريم. در Hello World اين آيتم ها در common.php ست مي شوند. اين نکته مهم است که آن ها بايد محرمانه حفظ شوند بنابراين در يک برنامه ي کاربردي واقعي شما بايد آن ها را در يک محل امن تر نظير فايلي با دسترسي محدود پنهان کنيد.
برنامه ي کاربردي بايد شامل يک صفحه ي لاگ اين محلي باشد تا کاربر به جاي اين که از طريق يک صفحه ي Google Apps وارد شود مستقيما به ToDoManager برود. اگر کاربر تلاش کند به صفحه اي در برنامه ي کاربردي شما دسترسي يابد و متغير نشست user id را تنظيم نکرده باشد، برنامه ي کاربردي شما بايد او را به اين صفحه ي Log in که فرآيند OpenID را آغاز مي کند، هدايت نمايد. در برنامه ي کاربردي Hello World، فايل Login.php صفحه ي ويژه ي Log in محسوب مي شود.
اگر بخواهيد قبل از اين که Google Billing API راه اندازي شود از کاربران پول دريافت کنيد، مجبور هستيد خودتان نحوه ي پرداخت را اداره و مديريت کنيد. شما مي توانيد يک لينک ست آپ به mainfest برنامه ي کاربردي اضافه کنيد تا بدين ترتيب adminهايي که برنامه ي کاربردي را نصب مي کنند بتوانند به صفحه ي ست آپ سرور شما يعني جايي که مي توانيد اطلاعات مربوط به پرداخت را جمع آوري کنيد هدايت شوند.
منبع: ماهنامه ي کامپيوتري بزرگراه رايانه، شماره ي 136.
مقالات مرتبط
تازه های مقالات
ارسال نظر
در ارسال نظر شما خطایی رخ داده است
کاربر گرامی، ضمن تشکر از شما نظر شما با موفقیت ثبت گردید. و پس از تائید در فهرست نظرات نمایش داده می شود
نام :
ایمیل :
نظرات کاربران
{{Fullname}} {{Creationdate}}
{{Body}}