ãŠãŒã¶ãŒãã¢ããªã±ãŒã·ã§ã³ã§äœæ¥ããŠããéã ãã§ãªããããŒã¿ãåä¿¡ããæ¹æ³ã¯2ã€ãããŸãã
- ãŠãŒã¶ãŒããoffline_accessèš±å¯ãååŸãïŒãæ°žé ã®ããŠãŒã¶ãŒaccess_tokenãä¿åãïŒããã¹ã±ãžã¥ãŒã«ã«åŸã£ãŠãå¿ èŠãªããŒã¿ãååŸããŸãïŒcronã¹ã¯ãªããããã«ããŸãïŒã
- Facebookãããã¹ãŠã®ããŒã¿å€æŽãåä¿¡ãããªã¢ã«ã¿ã€ã æŽæ°ãä»ããŠæŽæ°ãæ§æããã³ãµãã¹ã¯ã©ã€ãããã¹ã¯ãªãããèšè¿°ããŸãã
ç«ã®äžã§ããªã¢ã«ã¿ã€ã æŽæ°ã䜿çšããããšã§ãç¶æ³ã«ãã£ãŠã¯1æ¥ãããã®APIãªã¯ãšã¹ãã®æ°ã100å以äžæžããæ¹æ³ã®ä»®æ³çãªäŸãåŠã¶ããšãã§ããŸãã æŽæ°ã«ãµãã¹ã¯ã©ã€ãããããã®ã¹ã¯ãªãããäœæãããã®åäœã確èªããŠãFacebookèªäœãããªããžã§ã¯ãã®å€æŽã«é¢ããããŒã¿ãåãåããŸãã
èšäºã®åé ã«ã¯å€ãã®çè«ãå«ãŸããŠãããFacebookã®ããã¥ã¡ã³ãããŒãžã®ãã·ã¢èªã®ç¿»èš³ã«äŒŒãŠããŸã ã è±èªã§èªã¿ãããå Žåã¯ã2çªç®ã®æ¹æ³ã®ãã¹ãŠãã¹ãããããŠãã ãªã¢ã«ã¿ã€ã æŽæ°ã®äŸãã»ã¯ã·ã§ã³ã«é²ãã§ãã ãã ã ããããäœããã®çç±ã§ãæåã®èªæžã®åŸããã®æ©èœãæ§æã§ããŸããã§ããã ãã®èšäºãããªããããæ©ãç解ããã®ã«åœ¹ç«ã€ããšãé¡ã£ãŠããŸãã
æåã®æ¹æ³
äžéšã®ã¢ããªã±ãŒã·ã§ã³ã®æ©èœã¯ãã¹ã±ãžã¥ãŒã«ã«åŸã£ãŠããŒã¿ãåä¿¡ããå¿ èŠæ§ã«é¢é£ããŠããå ŽåããããŸãã ããšãã°ãç¹å®ã®ãã£ã¬ã¯ããªããããŒãžã®ãããïŒãåéããŸãã ãããè¡ãã«ã¯ã1æéã«1åééã§ããŒã¿ãååŸããŸãã ããã¯è¯ã䜿çšäŸã§ããããããªããšããã®ããŒã¿ãååŸã§ããªããªããŸãã ããããå€ãã®å Žåããã®æ¹æ³ã¯ããã¹ã±ãžã¥ãŒã«ã©ãããã§ã¯ãªããFacebookèªäœãããªã¢ã«ã¿ã€ã ã§æŽæ°ãåä¿¡ã§ãããªããžã§ã¯ãã«ã䜿çšãããŸãã
æåã®æ¹æ³ã®é倧ãªæ¬ ç¹ã®ãã¡ã次ã®ãã®ãåºå¥ã§ããŸãã
- ããŒã¿ã®ãã§ãã¯é »åºŠãäœãã»ã©ãä¿¡é Œæ§ã¯äœããªããŸãã
- é »ç¹ãªæŽæ°ã«ããé«ããªãœãŒã¹ã³ã¹ãã
- ãŠãŒã¶ãŒã¯ãoffline_access-ãã€ã§ãèªåã®ããŒã¿ãžã®ã¢ã¯ã»ã¹ãèš±å¯ãããããŸããã
æ©èœããŠãŒã¶ãŒã®å人ã«é¢é£ä»ããããŠããã¢ããªã±ãŒã·ã§ã³ãäœæãããšæ³åããŠãã ãããææ°ã®æ å ±ãå ¥æããããšã¯éåžžã«éèŠã§ãã ã¢ããªã±ãŒã·ã§ã³ã1000人ã®ãŠãŒã¶ãŒã«ãã£ãŠã€ã³ã¹ããŒã«ããããšããŸãã ãããŠãå人ããŒã¿ã®èš±å®¹ããããã£ãã·ã¥æéã1æéãšããŸãã ãã®çµæããŠãŒã¶ãŒãã¬ã³ãã®ããŒã¿ããŒã¹ãææ°ã«ãªãããã«ãæ¯æ¥24,000ã®ãªã¯ãšã¹ããéä¿¡ããŸãïŒ ãŸãããŠãŒã¶ãŒã¯1000人ã®ã¿ã§ããã1æ¥ã«ãã¹ãŠã®äººãå人ã«å€æŽãå ããã®ã¯æ°çŸã«éããªããšæ³å®ã§ããŸãïŒããã¯å人çãªçµéšã«åºã¥ãæšæž¬ã§ãïŒã
æåã®æ¹æ³ã®æ¬ ç¹ã解決ããããã«ãFacebookã¯Graph APIã®ãªã¢ã«ââã¿ã€ã æŽæ°ãè¡ããŸããã
第äºã®æ¹æ³
ãªã¢ã«ã¿ã€ã æŽæ°ã®ãµããŒãã«ãããã¢ããªã±ãŒã·ã§ã³ã§FacebookããŒã¿ã®å€æŽããµãã¹ã¯ã©ã€ãã§ããŸãã ã¢ããªã±ãŒã·ã§ã³ã¯ãFacebookãµãŒããŒãããã¹ã±ãžã¥ãŒã«ã©ããã«ãããŒãªã³ã°ãã代ããã«ãFacebookããæŽæ°ãåä¿¡ããŠââããŒã¿ãä¿åããŸãã ããŒã¿ããã£ãã·ã¥ããŠãã®APIã䜿çšãããšãã¢ããªã±ãŒã·ã§ã³ã®ä¿¡é Œæ§ãåäžããããŒãæéãççž®ãããŸãã 賌èªããŠããå€æŽãçºçãããã³ã«ãFacebookã¯å€æŽã®ãªã¹ãã䜿çšããŠããŒã¿æŽæ°åŠçã¹ã¯ãªããã«HTTP POSTèŠæ±ãè¡ããŸãã ãµãŒããŒã¯ãå€æŽã衚瀺ãããŠããæ°å以å ã«å€æŽã®éç¥ãéä¿¡ããŸãã
ãªããžã§ã¯ã
çŸæç¹ã§ã¯ã次ã®ã¿ã€ãã®ãªããžã§ã¯ãããµãã¹ã¯ã©ã€ãã§ããŸãã
- user-ç¹å®ã®ãã£ãŒã«ãããã³å¯Ÿå¿ããGraph APIããŒããšã®ãŠãŒã¶ãŒé¢ä¿ã«é¢ããéç¥ãåãåããŸãã
- èš±å¯-ãŠãŒã¶ãŒãã¢ããªã±ãŒã·ã§ã³ã®èš±å¯ãå€æŽãããšãã«éç¥ãåãåããŸãã
- ããŒãž-ã¢ããªã±ãŒã·ã§ã³ãè¿œå ïŒã€ã³ã¹ããŒã«ïŒããããŒãžãäžè¬çãªããããã£ãå€æŽãããšãã«éç¥ãåãåããŸãã
*ãµãã¹ã¯ã©ã€ãã§ããUserãªããžã§ã¯ãã®ãã¹ãŠã®ããããã£ãšé¢ä¿ã ããšãã°ããã£ãŒããå人ãã¢ã¯ãã£ããã£ãèå³ãé³æ¥œãæ¬ãæ ç»ããã¬ãããããããã§ãã¯ã€ã³ãªã©ã®ãªã³ã¯ãå©çšã§ããŸãã ãã ããåæã«ãããŒã ãã¿ã°ä»ããæçš¿ãåçãã¢ã«ãã ããããªãã°ã«ãŒããã¡ã¢ãã€ãã³ããåä¿¡ãã¬ã€ãéä¿¡ãã¬ã€ãæŽæ°ãã¢ã«ãŠã³ããªã©ã®ãªã³ã¯ã®å€æŽã賌èªããããšã¯ã§ããŸãã
ãµãã¹ã¯ãªãã·ã§ã³
ã¢ããããŒãã®ãµãã¹ã¯ãªãã·ã§ã³ãèšå®ããã«ã¯ã次ã®ãã®ãå¿ èŠã§ãã
- FacebookããHTTP GETïŒãµãã¹ã¯ãªãã·ã§ã³ã確èªããïŒèŠæ±ãšPOSTïŒããŒã¿ã®å€æŽã«é¢ããïŒèŠæ±ã®äž¡æ¹ãåä¿¡ããã¹ã¯ãªããïŒURLïŒãèšå®ããŸãã
- Graph APIã«POSTãªã¯ãšã¹ããè¡ã
https://graph.facebook.com/<app-id>/subscriptions
ãµãã¹ã¯ã©ã€ãããæ€èšŒãªã¯ãšã¹ããåŠçããæºåãããŸãã
ãªã¯ãšã¹ããéä¿¡ããããšã«ãã
https://graph.facebook.com/ <app-id> / subscriptionsïŒaccess_token = ...éä¿¡ããHTTP POSTãGETããŸãã¯DELETEãªã¯ãšã¹ãã«å¿ããŠã次ã®3ã€ã®ããšãå®è¡ã§ããŸãã
- ãµãã¹ã¯ãªãã·ã§ã³ã®è¿œå ãšå€æŽïŒPOSTïŒã
- ãµãã¹ã¯ã©ã€ããããã¹ãŠã®ãªããžã§ã¯ããšãã®ãã£ãŒã«ãã®ãªã¹ããååŸããŸãïŒGETïŒ
- ãµãã¹ã¯ãªãã·ã§ã³ã®åé€ïŒDELETEïŒ
ãªã¯ãšã¹ãã«ã¯access_tokenã¢ããªã±ãŒã·ã§ã³ãå«ãŸããŠããå¿ èŠããããŸããããã¯ãã¢ããªã±ãŒã·ã§ã³IDïŒapp-idïŒãšã¢ããªã±ãŒã·ã§ã³ã·ãŒã¯ã¬ããããŒïŒapp-secretïŒã䜿çšããŠååŸã§ããŸãã HTTP GETãéä¿¡ããã ãã§ã
https://graph.facebook.com/oauth/access_token?client_id=<app-id>&client_secret=<app-secret>&grant_type=client_credentialsãããŠçããæ¥ãã§ãããïŒaccess_token = ...
ãµãã¹ã¯ãªãã·ã§ã³ã®è¿œå ãšå€æŽ
ãããã£ãŠããµãã¹ã¯ãªãã·ã§ã³ãè¿œå ãããªã¯ãšã¹ããéä¿¡ããå¿ èŠãããå Žæãäžèšã§èªã¿ãŸããã æ¥ãã§ãããã®èŠæ±ãæºããå¿ èŠã¯ãããŸãããè³æã®ãã¬ãŒã³ããŒã·ã§ã³ã®æ§é ã¯ãå¿ èŠãªæé ã®é åºãšã¯ç°ãªããŸãã ããã¯ãææãé£ç¶çã«ç 究ããããã«ç¹ã«è¡ãããŸãã ãã ãããã®äŸã§ã¯ãäŸã®åã®æåŸã®éšåã§èª¬æãããŠããã¯ãšãªãæåã«å®è¡ããŸãã
ã¢ããªã±ãŒã·ã§ã³ã¯ãå¯èœãªãªããžã§ã¯ãã®ã¿ã€ãããšã«1ã€ã®ãµãã¹ã¯ãªãã·ã§ã³ã®ã¿ãæã€ããšãã§ããŸãã ãã§ã«ãµãã¹ã¯ãªãã·ã§ã³ããããªããžã§ã¯ããè¿œå ãããšãæ¢åã®ãµãã¹ã¯ãªãã·ã§ã³ã¯æ°ãããµãã¹ã¯ãªãã·ã§ã³ã«çœ®ãæããããŸãã ãµãã¹ã¯ãªãã·ã§ã³ãè¿œå ãŸãã¯å€æŽããã«ã¯ããã£ãŒã«ããå«ãPOSTãªã¯ãšã¹ããéä¿¡ããå¿ èŠããããŸãã
- ãªããžã§ã¯ã-ãªããžã§ã¯ãã®çš®é¡ïŒãŠãŒã¶ãŒãæš©éããŸãã¯ããŒãžã ããšãã°ãã¢ããªã±ãŒã·ã§ã³ã®ãã¹ãŠã®ãŠãŒã¶ãŒãªã©ããã®ã¿ã€ãã®ãã¹ãŠã®ãªããžã§ã¯ããç£èŠããŸãã
- fields-éžæãããªããžã§ã¯ãã®ããããã£ãšé¢ä¿ã®ãªã¹ãïŒã³ã³ãã§åºåãããèŠçŽ ïŒã ããšãã°ããŠãŒã¶ãŒã®ååãåçãåéãã£ãŒã«ããããã³ãã¥ãŒã¹ãã£ãŒããªã³ã¯ã®å€æŽãç£èŠããã«ã¯ãå€ãååãåçãåéããã£ãŒãããæå®ããå¿ èŠããããŸã
- callback_url-ã¢ããªã±ãŒã·ã§ã³ã賌èªããŠããå€æŽãFacebookãæçš¿ããURLã
- verify_tokenã¯ããªã¯ãšã¹ãã®ä¿¡é Œæ§ãæ€èšŒããããã«èšå®ãããã·ãŒã¯ã¬ããã³ãŒããã§ãã ãµãã¹ã¯ãªãã·ã§ã³åŠçã¹ã¯ãªããã«æž¡ãããŸãã
ç»é²ãããã¹ãŠã®ãªããžã§ã¯ããšãã®ãã£ãŒã«ãã®ãªã¹ããååŸãã
ãµãã¹ã¯ãªãã·ã§ã³URLã«å¯ŸããŠGETãªã¯ãšã¹ããè¡ãããšã«ãã
https://graph.facebook.com/ <app-id> / subscriptionsïŒaccess_token = ...ãµãã¹ã¯ãªãã·ã§ã³ããªã¹ãããJSONãšã³ã³ãŒããããã³ã³ãã³ããå«ãå¿çãåãåããŸãã ãŠãŒã¶ãŒãªããžã§ã¯ãã®ãã¬ã³ãæ¥ç¶ãšãæš©éã®offline_accessã«ãµãã¹ã¯ã©ã€ãããŸããã çãã¯æ¬¡ã®ãšããã§ãã
{ ãããŒã¿ãïŒ[ { ããªããžã§ã¯ããïŒããŠãŒã¶ãŒãã "callback_url"ïŒ "http://millione.tv/ <ã¹ã¯ãªãããžã®ãã¹>"ã ããã£ãŒã«ããïŒ[ ãåéã ]ã ãã¢ã¯ãã£ããïŒtrue }ã { ããªããžã§ã¯ããïŒãèš±å¯ãã "callback_url"ïŒ "http://millione.tv/ <ã¹ã¯ãªãããžã®ãã¹>"ã ããã£ãŒã«ããïŒ[ ãoffline_accessã ]ã ãã¢ã¯ãã£ããïŒtrue } ] }
ãµãã¹ã¯ãªãã·ã§ã³ãåé€
ãã¹ãŠã®ãªããžã§ã¯ãã«å¯Ÿãããµãã¹ã¯ãªãã·ã§ã³å šäœãåé€ããã«ã¯ãDELETEãªã¯ãšã¹ããéä¿¡ããŸãã ç¹å®ã®ãªããžã§ã¯ãã®ãµãã¹ã¯ãªãã·ã§ã³ã解é€ããå Žåã¯ããªããžã§ã¯ããã©ã¡ãŒã¿ãŒãæå®ããŸãïŒããšãã°ãobject = userïŒã
ã³ãŒã«ããã¯ãµãŒããŒ
FacebookãµãŒããŒã¯ããµãã¹ã¯ãªãã·ã§ã³ãè¿œå ãŸãã¯å€æŽããããšãããšãcallback_urlã«HTTP GETãªã¯ãšã¹ããéä¿¡ããŸãã ãµãã¹ã¯ãªãã·ã§ã³ãæåãããšãFacebookãµãŒããŒã¯HTTP POSTã䜿çšããŠåãURLã«å€æŽéç¥ãéä¿¡ããŸãã
ãµãã¹ã¯ãªãã·ã§ã³æ€èšŒ
ãµãã¹ã¯ãªãã·ã§ã³ãæçµçã«è¿œå ãŸãã¯å€æŽãããåã«ãFacebookãµãŒããŒã¯æ¬¡ã®ãã©ã¡ãŒã¿ãŒã䜿çšããŠãcallback_urlã§HTTP GETãäœæããŸãã
- hub.mode-æååãsubscribeãããã®ãã©ã¡ãŒã¿ãŒã«æž¡ãããŸãã
- hub.challenge-ã©ã³ãã ãªæååã
- hub.verify_tokenã¯ãFacebookã«éä¿¡ãããªã¯ãšã¹ãã®ä¿¡é Œæ§ãæ€èšŒããããã«èšå®ãããã·ãŒã¯ã¬ããã³ãŒããã§ãã
ããŒã¿æŽæ°ãåŠçããããã®ã¹ã¯ãªããã¯ãæåã«hub.verify_tokenã®å€ïŒFacebookã«éä¿¡ãããã·ãŒã¯ã¬ããã³ãŒããïŒã確èªããŠãããhub.challengeãã©ã¡ãŒã¿ãŒãè¿ããŸãã ããã¯ããµãŒããŒã§DDoSæ»æãå®è¡ããæ段ãšããŠã¹ã¯ãªãããä¿è·ããããã«ç¹ã«è¡ãããŸãã
éçºè åãã®æ³šæïŒPHPã§ã¯ããã©ã¡ãŒã¿ãŒã®ããªãªãã¯èªåçã«ã¢ã³ããŒã¹ã³ã¢ã«å€æãããŸãã ãããã£ãŠã
$_GET["hub_mode"]
ã
$_GET["hub_challenge"]
ããã³
$_GET["hub_verify_token"]
ãåç §ããå¿ èŠããããŸãã
å€æŽéç¥
ããŒã¿ãå€æŽãããæå¹ãªãµãã¹ã¯ãªãã·ã§ã³ãããå ŽåãFacebookãµãŒããŒã¯ãæå®ããcallback_urlã«å¯ŸããŠHTTP POSTãªã¯ãšã¹ããäœæããŸãã èŠæ±ã³ã³ãã³ãã¿ã€ãã¯application / jsonã«ãªããŸãã body-1ã€ä»¥äžã®å€æŽã«é¢ããæ å ±ãå«ãJSONãšã³ã³ãŒããããæååã 以äžã«ãã¢ããªã±ãŒã·ã§ã³ã³ãŒãã®äŸã瀺ããŸãã
è¡ã«ã¯çŸåšã®å€ã«é¢ããããŒã¿ãå«ãŸããªãããšã«æ³šæããŠãã ããã ãããã£ãŠãããããåä¿¡ããã«ã¯ãAPIã«å®æçã«ãªã¯ãšã¹ãããå¿ èŠããããŸãïŒã»ãã¥ãªãã£ããªã·ãŒã«ããïŒã å¿ èŠãªããŒã¿ãããã«ããŠã³ããŒãããŠããŠãŒã¶ãŒãã¢ããªã±ãŒã·ã§ã³ã«æ»ã£ããšãã«ãããŠã³ããŒãæéã®å¢å ã«ããåé¡ãçºçããªãããã«ããããšãã§ããŸãã
Facebookã¯å€æŽãéçŽãã5ç§ããšã«ããŸãã¯å€æŽæ°ã1000ãè¶ ããå Žåã«ãããã§éä¿¡ããŸããå€æŽéç¥ãããªãã«é ä¿¡ãããªãå ŽåãFacebookã¯åè©Šè¡ããããããå°ãåŸã§ã次ã®24æéã§ãªã¯ãšã¹ãã®é »åºŠãæžãããŸãã
ãªã¢ã«ã¿ã€ã æŽæ°äœæ¥ã®äŸ
çè«ãå®è·µããŸãã ãããè¡ãã«ã¯ããã¡ã€ã³ã®æå®ãããã¢ãã¬ã¹callback_urlã«é 眮ãããPHPã¹ã¯ãªããã§ãããã¹ãã£ã³ã°ãå¿ èŠã«ãªããŸãã Facebookã¢ããªãå¿ èŠã§ãã éçºè ã®ã¢ããªã±ãŒã·ã§ã³ããŒãžã§æ¢åã®ãã®ã䜿çšããããæ°ãããã®ãäœæã§ããŸã ã
1.ã¢ããªã±ãŒã·ã§ã³
2.ããŒã¿æŽæ°ãåŠçããããã®ã¹ã¯ãªãã
callback_urlã®ã¹ã¯ãªãããä¿åããŸã
<ïŒ php
/ *ãªã¯ãšã¹ãã¯15ç§ä»¥å ã«å®äºããå¿ èŠããããŸãã
ããããªããšãFacebookãµãŒããŒã¯ã¿ã€ã ã¢ãŠããšèŠãªãã
ããã·ã¥éç¥ãåéä¿¡ããŠãã ããã * /
define ïŒ 'VERIFY_TOKEN' ã '<secret_code>' ïŒ ;
$ method = $ _SERVER [ 'REQUEST_METHOD' ] ;
if ïŒ $ method == 'GET' && $ _GET [ 'hub_mode' ] == 'subscribe'
&& $ _GET [ 'hub_verify_token' ] == VERIFY_TOKEN ïŒ {
echo $ _GET [ 'hub_challenge' ] ;
} ãã®ä»
if ïŒ $ method == 'POST' ïŒ {
$ data = file_get_contents ïŒ "phpïŒ// input" ïŒ ;
$ fh = fopen ïŒ 'data.txt' ã 'a' ïŒãŸãã¯die ïŒ 'open file' ïŒ ;
if ïŒ -1 == fwrite ïŒ $ fh ã $ data ïŒ ïŒïŒ { die ïŒ 'write data' ïŒ ; }
fclose ïŒ $ fh ïŒãŸãã¯die ïŒ 'close file' ïŒ ;
}
ïŒ>
3.ãµãã¹ã¯ãªãã·ã§ã³ãè¿œå ãã
ãã®åŸãFacebookéçºè åãã®æ°ããããŒã«ã§ããGraph API Explorerã䜿çšããŸã ã
POSTãªã¯ãšã¹ããéžæããŠãµãã¹ã¯ãªãã·ã§ã³ãè¿œå ãããã¹ãŠã®ãã£ãŒã«ãã«å ¥åããŸãã access_tokenïŒã¢ããªã±ãŒã·ã§ã³ïŒãååŸããã«ã¯ããã©ãŠã¶ã§ãªã³ã¯ãéããapp-idãšapp-secretã«ã¢ããªã±ãŒã·ã§ã³ã®ããŒã¿ãå ¥åããŸãã
https://graph.facebook.com/oauth/access_token?client_id=<app-id>&client_secret=<app-secret>&grant_type=client_credentials
ã¹ã¯ãªãããžã®ãã¹ã¯ãããšãã°facebook / callback.phpã§ãã ã¢ããªã±ãŒã·ã§ã³èšå®ããã¢ããªã·ãŒã¯ã¬ãããååŸããverify_tokenã«èªåã§ã·ãŒã¯ã¬ããã³ãŒããäœæããããšãéèŠã§ãã
ãã®ãããäžã®ç°è²ã®ããã¯ã¹ã§[éä¿¡]ãã¯ãªãã¯ããŠãäœãèµ·ãããªãã£ãå ŽåããŠãŒã¶ãŒãªããžã§ã¯ãã®ãã¬ã³ãæ¥ç¶ã«ãµãã¹ã¯ãªãã·ã§ã³ãè¿œå ããããšãæå³ããã¢ããªã±ãŒã·ã§ã³ã®ãŠãŒã¶ãŒããã¬ã³ãã®1ã€ãè¿œå ãŸãã¯åé€ãããšããã«ãFacebookã¯callback_urlã«éç¥ãéä¿¡ããŸãã ãã®äŸã§ã¯ãoffline_accessæš©éãªããžã§ã¯ãã«ããµãã¹ã¯ãªãã·ã§ã³ãè¿œå ããŸããã
4.ãŠãŒã¶ãŒã¢ã¯ãã£ããã£ãäœæãã
ã¢ããªã±ãŒã·ã§ã³ãã€ã³ã¹ããŒã«ããå Žå-倧ããããšã¯ãããŸããã ããã§ãªãå Žåãã ã¢ã¯ã·ã§ã³ã®ã·ãŒã±ã³ã¹ã¯åãã§ãã
ãŸããoffline_accessããŒããã·ã§ã³ãè¿œå ããå¿ èŠããããŸãã ã¢ããªã±ãŒã·ã§ã³ãã€ã³ã¹ããŒã«ãããŠããªãå Žåãããã¯èªåçã«è¡ãããŸãã ã¢ããªã±ãŒã·ã§ã³ãã€ã³ã¹ããŒã«ããŠããŸããã ãã©ãŠã¶ã®è¡ããèªèšŒãŠã£ã³ããŠãåŒã³åºããŠã¿ãŸãã app-idãã¢ããªã±ãŒã·ã§ã³IDã«çœ®ãæããsite-urlãhttpïŒ// <ãã¡ã€ã³>ã«çœ®ãæããŠãªã³ã¯ãéããŸãïŒ
https://www.facebook.com/dialog/oauth?client_id=<app-id>&redirect_uri=<site-url>&scope=offline_access
èªèšŒã«æåãããšãFacebookã¯httpïŒ// <your domain> /ïŒCode = ...ã«ãªãã€ã¬ã¯ãããŸã
ã¹ã¯ãªããã«å«ãŸããããžãã¯ã«ãããšãçä¿¡éç¥ãåŠçãããšããéä¿¡ãããJSONãšã³ã³ãŒããããè¡ããã¹ã¯ãªãããšåããã£ã¬ã¯ããªã«ããããã¹ããã¡ã€ã«data.txtã«è¿œå ããã ãã§ãã ãã®ãã¡ã€ã«ãäœæããããã©ãããããã³å«ãŸããŠããæ å ±ã確èªããŠãã ããã
è¿œå ããæ å ±ã¯æ¬¡ã®ããã«ãªããŸãã
{"object":"permissions","entry":[{"uid":"100001828786121","id":"100001828786121","time":1310669052,"changed_fields":["connected"]},{"uid":"100001828786121","id":"100001828786121","time":1310669052,"changed_fields":["offline_access"]}]}
ã芧ã®ãšãããã¢ããªã±ãŒã·ã§ã³ãã€ã³ã¹ããŒã«ããoffline_accessèš±å¯ãèš±å¯ããŸããã uidã«ãã£ãŠãããŒã¿ãå€æŽããããŠãŒã¶ãŒãšãæéïŒè¿œå ã®æéïŒãå€å¥ã§ããŸãã
5.ã¢ã¯ã·ã§ã³ãåé€ãã
Facebook ã®ã¢ããªã±ãŒã·ã§ã³èšå®ã«ç§»åããŠãã¢ããªã±ãŒã·ã§ã³ãéããoffline_accessæš©éãåé€ã§ããŸãã data.txtãã¡ã€ã«ã§ãåã³éç¥ãéä¿¡ãããŠããããšãããããŸãã åéã®1人ãè¿œå ãŸãã¯åé€ããããšãã§ããŸããç»é²ãããããã®éç¥ã¯callback_urlã«éãããã¹ã¯ãªããã«ãã£ãŠåŠçãããããšãããããŸãã
çµè«
ããã§ãFacebook Real-Time Updatesã®ãã°ãããæ©èœã«ã€ããŠç¥ã£ãã®ã§ããŠãŒã¶ãŒããŒã¿ãšæš©éã®å€æŽã«é¢ããæ å ±ãéä¿¡ã§ããŸãã æ®å¿µãªãããäœããã®çç±ã§ããŠãŒã¶ãŒãã¢ããªã±ãŒã·ã§ã³ãåé€ããŠããããŒã¿ã¯å€æŽãããŸããã§ããã ãããã£ãŠãæ°ããã¡ãœãããæéãšãªãœãŒã¹ãç¯çŽããªãããã«-çµå±ãç¹å®ã®ã¿ã¹ã¯ïŒããšãã°ãã¢ããªã±ãŒã·ã§ã³ã®ãã¹ãŠã®ãŠãŒã¶ãŒã«ã¡ãŒã«ãéä¿¡ããïŒãå®è£ ãããšãã«ãéåžžã®APIã䜿çšããŠããŒã¿ããŒã¹å ã®ãã¹ãŠã®ãŠãŒã¶ãŒãäºåã«èª¿ã¹ãŠãã¢ããªã±ãŒã·ã§ã³ãã€ã³ã¹ããŒã«ãããŠãããã©ããã確èªããããšã¯ãŸã 䟡å€ããããŸãã