ここでは、スマート デバイス アプリケーションで GeneXus を通じて
Facebook の GraphAPI を使用する方法を示します。
Facebook の開発者サイトにアプリケーションを登録し、
Facebook アプリケーション ID を取得します。
詳細については、「
Facebook アプリケーションを登録する方法」を参照してください。
Facebook Button コントロールを使用して、エンドユーザーが Facebook の資格情報で GeneXus アプリケーションにログインできるようにします。これにより、ユーザーのアクセストークンを取得し、Graph API を使用してユーザーデータを取得できるようになります。
たとえば、次に示すように、
OnUserInfoUpdated イベントを使用して
アクセストークンをリクエストできます:
Event &SDFacebookButton.OnUserInfoUpdated
&FacebookAccessToken = Facebook.AccessToken
Endevent
ここで、&FBAccessToken は
FacebookAccessToken SDT に基づきます。
この例では、Graph API を使用して
ユーザーの投稿を取得します。そのために、開発者は、"user_posts" タグを
[ Read Permission ] プロパティに追加します。エンドユーザーがログインしたときに、開発者の意図 (この例ではユーザーの投稿の取得) がユーザーに
通知されます。
HttpClient データタイプを使用して GraphAPI データをリクエストするオンラインプロシージャーを記述します。このプロシージャーには、デバイスから取得したアクセストークンとユーザー資格情報の文字列を parm ルールで渡します。
たとえば、プロシージャーの名前を GetUserPosts とし、その parm ルールを次のように定義するとします:
parm(in:&AccessToken, in:&UserId, out:&FBJson);
ソースコードは次のように記述できます:
&FBVersion = !"v2.12" // 必要に応じて変更
&Url = !"https://graph.facebook.com/%version/%user_id/feed?access_token=%access_token"
&Url = &Url.Replace("%version",&FBVersion)
&Url = &Url.Replace("%user_id",&UserId)
&Url = &Url.Replace("%access_token",&AccessToken)
&HttpClient.Execute(HttpMethod.Get,&Url)
&FBJson = &HttpClient.ToString()
その後、次のようにユーザーイベントでこのプロシージャーを呼び出します:
Event 'Get My Posts'
&FBJson = GetUserPosts(&FacebookAccessToken.AccessToken, &FacebookAccessToken.UserId)
Endevent
その結果、ユーザーがログインしたときに、文字列ベースの &FBJson 変数に次の値が格納されるようになります:
{
"data": [
{
"story": "Damian Salvia is with Pablo Martinez and 5 others.",
"created_time": "2018-05-07T16:13:21+0000",
"id": "<id>"
},
{
"story": "Stella Marys Pereira Larrosa added a new photo \u2014 with Nicolas Mechulam and 2 others.",
"created_time": "2019-07-11T15:12:25+0000",
"id": "<id>"
},
...
] ,
"paging": {
"previous": "https://graph.facebook.com/v2.12/<user_id>/feed?since=<datetime>&access_token=<token>&limit=<number>&__paging_token=<token>&__previous=1",
"next": "https://graph.facebook.com/v2.12/<user_id>/feed?access_token=<token>&limit=<number>&until=<datetime>&__paging_token=<token>"
}
要件を満たすかどうか結果を解析してください。
Graph API の完全統合は、
GeneXus 15 Upgrade 10 以降で使用できます。