OAuth CrossDomain JavaScript Proxy ãä½ã£ã
ãµã¼ãã¹ï¼
ä½ãã§ããã
OAuth(3-legged)ã®APIãJavaScriptã¯ã©ã¤ã¢ã³ãããç°¡åã«å¼ã¹ãããã«ãªãã¾ãã
ããã°ã©ã çã«ã¯éåæã®å¼ã³åºãã®ã¿ã§è¨è¿°ã§ããé¢åãªæç¶ãï¼ãã¼ã¯ã³ã®ããåããåæç»é¢ã®è¡¨ç¤ºãªã©ï¼ã¯ãããã·å´ã§å®äºãã¾ãã
ãããã·ãµã¼ãã¹ã¯Google App Engineä¸ã§åãã¦ã¾ãã
ã³ã¼ãä¾
http://xdoauthproxy.googlecode.com/svn/trunk/assets/example.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Example Client : OAuth CrossDomain JavaScript Proxy</title> <script type="text/javascript" src="http://xdoauthproxy.appspot.com/js/json2.js"></script> <script type="text/javascript" src="http://xdoauthproxy.appspot.com/js/xd-oauth-client.js"></script> <script type="text/javascript"> function startXdRequest() { XdOAuth.init('http://xdoauthproxy.appspot.com/xd-server.html'); // ãããã·ãµã¼ãã¹ã®URLãæå®ãã¦åæå XdOAuth.request({ url : 'http://www.google.com/calendar/feeds/default/private/full?alt=json', // OAuthã«ããã¢ã¯ã»ã¹å¶å¾¡ãããã£ãAPIã¨ã³ããã¤ã³ã success : function(data) { var result = eval('(' + data + ')'); var html = []; for (var i=0; i<result.feed.entry.length; i++) { var entry = result.feed.entry[i]; html.push('<li>'+entry.title.$t+'</li>'); } document.getElementById('result').innerHTML = html.join(''); }, error : function(res) { alert(res.status + ':' + res.body); } }); } </script> </head> <body> <!-- place dummy image file on the same domain where client html file is located. --> <img src="./img/s.gif" /> <input type="button" onclick="startXdRequest()" value="Start OAuth Request to get private Google Calendar"> <ul id="result"></ul> </body> </html>
OpenSocialã®OAuth Proxyã¨ã¯ã¡ããã®ãï¼
JavaScriptããOAuthã«ã¢ã¯ã»ã¹ã§ããã¨ããç¹ã§ä¼¼ã¦ãã¨æãã¾ãããã¬ã¸ã§ããå¤ã§å©ç¨ã§ãã(ï¼ã³ã³ãããå¿
è¦ã¨ããªã)ç¹ãéãã¾ãã
æå³åãçã«ã¯ãFriendConnect API + OpenSocial OAuth Proxy - OpenSocial ã§ããããã
対å¿ããOAuth API
Googleç³»ã®ãµã¼ãã¹ã¨Myspace, Twitter, Smart.fm ã«å¯¾å¿ãã¦ã¾ããYahooãæéãã£ããããã¾ãã
ãã¼ãããã«リストããããã¾ããããã»ã¨ãã©ç»é²ãããã¦ãªãã®ã§è©¦ãã®ãé£ãããã§ãå¾ã«ãã¾ãã
注æç¹
ãªã¯ã¨ã¹ãæã«ãããã¢ããã¦ã£ã³ãã¦ã§åæç»é¢ãåºããããxdoauthproxy.appspot.com ã«å¯¾ãã¦ã¦ã£ã³ãã¦ãããã¢ãããããã«ã¼ãç¡å¹ã«ãã¦ããå¿ è¦ãããã¾ãã
å¶éäºé
åæçã¯GETã®ã¿ã§ããPOSTã®å®è£ ã¯ãã¼ã£ã¦ã¾ããããã£ã¨ã¡ãã£ã¨ããã°ä½ã¨ããªãã¾ãã
ãã®ä»
å¤åã«ã³ã³ã»ããçã§ãããã°å¤ãã¨æãã¾ãããã®ç¹çè§£ãã¦ä½¿ã£ã¦ãã ããã
Python+GAEã®ç¿ä½ã§ããããããã³ã¼ãã¯ãã¾ãç¾ãããªãã¨æãã¾ãã
åççã«ï¼åãã¼ã¿ã®æµããæ¿èªããç»é¢ãçºçãã¾ãï¼OAuth Provider -> xdoauthproxy.appspot.com ã®åæãxdoauthproxy.appspot.com -> JSãåãè¾¼ãã ãµã¤ãã®ãã¡ã¤ã³ã¸ã®åæï¼ããã®ããã¡ãã£ã¨åé·ã§ãã
ã¯ã©ã¤ã¢ã³ãå´ã¯å ¨é¨ãã©ã¦ã¶ã§åãJSãªã®ã§ãããã¯ãã¼ã¯ã¬ããã§å¼ã¶ã¨ããæ¯è¼çç°¡åã ã¨æãã¾ããäºåç»é²ã¨ãããã¾ãããã»ãã¥ãªãã£ã®ããã«æä½éã®ãã¨ã¯ãã£ã¦ãã¤ããã§ãããããããæä½éã§ãããµã¤ãã®çæ£æ§ç¢ºèªã®æ¹æ³ã¯ãå¿ è¦ãããã°å¥ã¨ã³ããªã«ãã¾ãããOAuthã®ç½²åã«æ¯ã¹ãã°DNSã«ä¾ã£ã¦ããã®ã§å¼±ãã»ãã§ãã
GreaseMonkeyã¨ããã使ãã®ã¯ãã¾ãæ³å®ãã¦ã¾ããããããããå¿ è¦ã§ãããããï¼