Vadlīnijas draugiem.lv aplikāciju izstrādātājiem

Daži svarīgi ieteikumi draugiem.lv aplikāciju izstrādātājiem. Viss tālāk rakstītais ir rakstīts ar domu, ka jūs izstrādē izmantojat HTML/JS/CSS/PHP/MySQL, taču praktiski viss tas pats attiecas arī uz citām tehnoloģijām, atliek vien piemeklēt vajadzīgās paralēles un uzstādījumus.

1.   Servera uzstādījumi

1.1.   Globāli servera uzstādījumi

allow_url_fopen - nepieciešams draugiem.lv PHP bibliotēkas darbībai

1.2.   Lietotājiem pieejamai aplikācijas versijai nepieciešamie PHP uzstādījumi

Parastam lietotājam pilnīgi neko neizsaka jūsu PHP kļūdu ziņojumi:

Missing Controller
Error: LacistestController could not be found.
Error: Create the class LacistestController below in file: app/controllers/lacistest_controller.php
<?php
class LacistestController extends AppController {
    var $name = 'Lacistest';
}
?>
Notice: If you want to customize this error message, create app/views/errors/missing_controller.ctp

Lietotājiem pieejamā vidē kļūdu ziņojumus ir jāpaslēpj, taču tajā pašā laikā ir jānodrošina, ka jūs saņemat un analizējat informāciju par notikušajām kļūdām:

display_errors = Off
log_errors = On

2.   Aplikācijas drošība

2.1.   Aizsardzība pret CRSF (Cross Site Request Forgery).

Aplikācijām ir jānodrošina, ka tās darbības nav iespējams izsaukt bez lietotāja līdzdarbības - gan GET, gan POST pieprasījumiem līdzi jāpadod papildus mainīgie, kas mainās katram lietotājam vienas sesijas ietvaros un tiek pārbaudīti servera pusē. Tas palīdz izvairīties no situācijas, kad lietotāji ievieto slēptus iframe ārpus draugiem.lv vides, kur ar javascript tiek veikta formu datu nosūtīšana uz attiecīgo adresi. Piemēram balsošana par kādu lietotāju konkursā, balsotājam par to nemaz neuzzinot:

<html>
<head>
</head>
<body onload="document.getElementById('forma').submit()">
        <form id="forma" action="http://lapa.lv/konkursi/uzvaretajs_sanem_iphone4/" method="post">
                <input type="hidden" name="uid" value="123456" />
                <input type="hidden" name="balsot" value="balsot"/>
        </form>
</body>
</html>

Aplikācijas pusē pievienojot šādai balsojuma formai papildus hash mainīgo, kas mainās katram lietotājam sesijas ietvaros, šāda veida balsojumi vairs nav iespējami. Jebkāda veida balsojumiem ir jādarbojas tikai kā POST pieprasījumiem.

3.   BUJ draugiem.lv lapu aplikāciju izstrādē

Šajā nodaļā apkopoti vairāki no biežāk uzdotajiem izstrādātāju jautājumiem.

3.1.   Aplikācijas novietojums - sākumlapa vai lapas sadaļa

Lapu aplikācijas var novietot gan konkrētās lapas sākumlapas vienā no kolonām, gan arī kā lapas sadaļu. Lai aplikācija varētu zināt, kurā no pozīcijām tā ir novietota, var izmantot iframe parametros padoto kolonas platuma mainīgo GET[dr_appw]:

Vērtība Aplikācijas novietojums
240 Sākumlapas šaurā (labā) kolona
480 Sākumlapas platā (centrālā) kolona
730 Lapas sadaļa

3.2.   Piekļuve lietotāju datiem

Atšķirībā no parastajām draugiem.lv aplikācijām, lapu aplikācijas pēc noklusējuma darbojas anonīmā režīmā. Tas nozīmē, ka atverot lapu, kurā būs ievietota aplikācija, lietotājam netiks piedāvāts atļaut piekļuvi saviem datiem. Tā rezultātā - ja lietotājs nebūs jau iepriekš atļāvis piekļuvi saviem datiem, pirmais izsaukums uz sesijas pārbaudi kā likums atgriezīs false:

$draugiemApi = new DraugiemApi(APPID, APIKEY);
$session = $draugiem->getSession();

Šajā gadījumā jums ir jāparāda aplikācijas "landing" lapa, kurā lietotājs ar JavaScript izsaukuma draugiemAuthorize() palīdzību var atļaut piekļuvi saviem datiem: http://www.draugiem.lv/applications/dev/iframe/#aplikacijas-autorizacijas-loga-atversana

Draugiem.lv lapu aplikācijas var ievietot arī kā bloku lapas sākumlapā. Šāds solis ir veikts apzināti, lai izvairītos no situācijām, kad lietotājam jau atverot lapu tiek prasīta piekļuve viņa datiem.

3.3.   Aktivitāšu pievienošana

Arī draugiem.lv lapu aplikācijām ir iespēja pieslēgt aktivitātes, taču atšķirībā no parastajām draugiem.lv aplikācijām, pievienojot lapu aktivitāti kā papildus parametrs līdzi ir jāpadod arī lapas identifikators, kuru jūs saņemat pie pirmās lapas atvēršanas GET parametrā api_page_id. Lai to izmantotu vēlāk, visticamāk tas ir jāsaglabā kādā sesijas mainīgajā.

Aktivitātes pievienošanas piemērs draugiem.lv lapu aplikācijā:

$draugiemApi = new DraugiemAPI(APPID, APIKEY);
$response = $draugiemApi->apiCall('add_activity', array('text'=>$text,'prefix'=>$prefix, 'link'=>$link, 'page_id' => $page_id));

Link parametrā ir jāpadod tikai tā daļa, kas seko aiz lapas adreses.

Lai savai aplikācijai pieslēgtu aktivitātes, rakstiet uz api@draugiem.lv

3.4.   Flash satura ievietošana

Lai ievietotais flash saturs (baneri, spēles, u.c.) nekonfliktētu ar draugiem.lv vidi, nepieciešams uzstādīt flash objekta "wmode" parmetram vērtību "transparent".

3.5.   Manu lapu aplikāciju neredz parasti apmeklētāji

Lapu aplikācijām šobrīd ir nepieciešams apstiprinājums, lai to redzētu citi draugiem.lv lietotāji. Lai iegūtu lapu aplikācijas apstiprinājumu, rakstiet uz api@draugiem.lv, vai skype: ingus.rukis

3.6.   Aplikācijas korekta aizvēršana tehnisku problēmu gadījumā

Gadījumā, ja jūsu aplikācijai ir tehniskas problēmas, kuru rezultātā jūs nevarat nodrošināt korekta kļūdas ziņojuma parādīšanu aplikācijas līmenī (piemēram, nestrādā hostings), jāizmanto iespēja aizvērt aplikāciju draugiem.lv pusē:

img/guidelines-closederror.png

Šī iespēja ir pieejama aplikācijas uzstādījumu labošanas skatā.

img/guidelines-close.png

4.   Fināls

Šis ir tikai vadlīniju pirmais uzmetums, noteikti to vēl papildināsim.