Kontakt kezelő program lévén először is a különböző szociális felületekre elkészített API-k vizsgálata a jelenlegi feladat, amelynek neki is láttam. Elsőnek a Google API-t választottam. Elsődleges feladatom ezeknek az API-knak az átvizsgálása, lehetőségek felfedése. A többféle lehetőség közül végül a Google+, és a Google People API-ra esett a választásom, mert ezek együttes használatával tudunk lekérdezni minden kritikus információt, amelyet később a webszolgáltatásunkban felhasználhatunk eredményesen.
Az első dolog amivel szembesültem, hogy az API-k hazsnálatához a Google Developer Console-ban először létre kell hozni egy Projectet, amelyen keresztül majd aktiválnunk kell a használni kívánt szolgáltatásokat, ezzel aktiválva a megfelelő elérési pontokat is.
Ha ezek megvannak már csak egy kliens ID-t, és kulcsot kell generálnunk, aminek a segítségével majd el tudjuk érni az engedélyezett szolgáltatásokat.
A szolgáltatások használatba vételéhez azonban szükségünk lesz egy bejelentkezésre, vagy a felhasználó hozzájárulására, az adatok eléréséhez. Ezt az OAuth2.0 Authorization keretrendszer segítségével valósíthatjuk meg. Segítségével külső kliensek, legyen az natív, vagy webes, korlátozott idejű hozzáférést kaphatunk bizonyos szolgáltatásokhoz. A protokoll szerinti eljárás a következő:
- A kliens hozzáférést kérvényez az erőforrás tulajdonosától.
- A kliens ezután kap egy hozzáférési engedélyt, ami egy meghatalmazás, ami az erőforrás tulajt képviseli.
- A kliens kérvényez egy hozzáférési Token-t(AccessToken), az engedélyeztető szervertől, az erőforrás tulaj meghatalmazásával.
- Az engedélyező szerver ez után felülvizsgálja a meghatalmazást, és engedélyezi a kérvényt, válaszul küldi a hozzáférési Token-t.
- A kliens ezután kérvényezheti a védett erőforrást az AccessToken használatával.
- Az erőforrás szerver pedig az AccessToken validálása után engedélyezi a kliensnek a használatát.
A megfelelő névterek megadása utána ennek a megvalósítása egy konzolos c# program keretében a következőképpen néz ki:
Majd ezt az eljárást meghívom a main() metódusban, hogy a visszakapott credential változóval inicializálni tudja a PlusService / PeopleService klienseket.
A futtatásuknak eredménye, hogy a program a google authentikációs oldalára vezet minket, ahol kéri, hogy az általunk kérvényezett adatokhoz a hozzáférést engedélyezzük.
mint engedélyeztük a hozzáférést a program átirányít egy oldalra, amit megadtunk neki, ez majd a későbbiekben egy a webes programunk által használt megfelelő url lesz, amely feldolgozhatja a lekért kapott információkat. Két metódust valósítottam meg, az egyik, GetPeople(PeopleService service, string pageToken){ … } a felhasználó ismerőseinek a neveit kérdezi le(egyéb információik lekérdezésén, az egyszerűbb identifikáció miatt, még dolgozom), a másik, PlusUserInfo(PlusService Pservice){ … } pedig a felhasználó személyes adataiból kérdez le, majd adja vissza az infót listázva. Az n/a értéknél olyan kapcsolatokról van szó, ahol név nem, de más adat meg van adva, például csak egy email cím van az adatlapon.