SlideShare una empresa de Scribd logo
1 de 40
Descargar para leer sin conexión
2010/10/05 gumiStudy #4




                                       mixi




Copyright 2010, All rights reserved.
@weboo

•  1999
•  2006

•  2008
      gumi Platform

•  2009 mixi      

      mixi              


                            2
• 
• 
•  mixi
   — 
   — 
   —            API
   —  C/
     P
   — 
   —     Tips
• 

                      3
• 
     iPhone

              2010   5   mixi Touch




•  2010     Android
•  Windows Phone 7
•  WebKit                             	
                                           4
5
gumi Platform
             mixi
     	
                                  	
 
     	
      GREE Platform
     	
      mixi      for Touch   	
 

• 
       API      API
• 



                                               6
7


                   

                       

	

              	




                           8
Day
 	
   gumi   	
             	
   	




                                       9
10
11
• Android               	
                                          

                                	

•  iPhone / iPod Touch Safari        	




                                              12
• Android                        	
                                                          

                                       	

•  iPhone / iPod Touch Safari                        	

•    UserAgent                	
•    Canvas              Home, Profile      	
•        viewer = owner              Canvas
•    PC/        /Touch                          	
•    Touch             PC                	
•                       Touch                  	
                                                              13
Mobile Phone                                    Third Party Developers
(no JavaScript)
                   Application Proxy                    Application Server

                                                                             XHTML




                   Media Cache Proxy




                                                       swf, gif, jpg, etc.



                                       RESTful API
                     mixi              with 2-legged
                  Social Data
                                                                             DB
                                          OAuth
                                                                                     14
OpenSocial JavaScript API                    mixi
                                                        Social Data



                               Invite
                               Activity
                               etc.
                                          makeRequest


gadgets.util.registerOnLoadHandler()

                                                         SAP Server
         * Rewrite HTML by Shindig
iframe




              16
1.               run_appli.pl                 HTTP        	
2.                iframe              HTML mixi      	
3.               iframe         SAP                            	
4. RESTful API
5. RESTful API             	
6. SAP            HTML
mixi
                                              Social Data

    OpenSocial JavaScript API


                                              RESTful API
                                   Invite     with 2-legged
                                   Activity   OAuth
                                   etc.

<script src=“touch.js”></script>




           * Request with OAuth Signature              DB

                                               SAP Server
                                                              18
•  iframe
          iframe    SAP                 	
•  RESTful API                               	
•           XML            URL     	
•  iframe URL              

   app_id, owner_id, viewer_id          	
•  URL
   OAuth Signature      	
•  Iframe          mixi       js
   Gadgets API User Flow API
•  Person & Friends
•  Persistence
•  Albums

•  Invite
•  Communication Feed	
•  Message
•  Geolocation
•  Request


                          20
21
<?xml version=“1.0” encoding=“utf-8”?>
<Module>
  <ModulePrefs title=“Hello, world!”></ModulePrefs>

  <Content type=“url” view=“touch” href=“http://example.com/” />

</Module>

                url                                   URL




                                                                   22
/           /

<?xml version=“1.0” encoding=“utf-8”?>
<Module>
  <ModulePrefs title=“Hello, world!”>
    <Require feature=“opensocial-0.8” />
  </ModulePrefs>
                                                       PC
  <Content type=“html” view=“home,canvas,profile”><![CDATA[
     <div>Hello, mixi     !</div>
  ]]></Content>

  <Content type=“url” view=“mobile” href=“http://example.com/” />

  <Content type=“url” view=“touch” href=“http://example.com/t/” />

</Module>                                            Touch
                                                                     23
URL

http://example.com/t/




opensocial_app_id=xxx      …     ID
opensocial_owner_id=xxx    …             ID
opensocial_viewer_id=xxx   …             ID
oauth_xxx=xxxxx            … OAuth Signature

              owner_id = viewer_id

                                               24
<!DOCTYPE html>
<html>
<head>
 <meta charset=”UTF-8” />
 <title>        mixi      for Touch</title>

 <script type="text/javascript" charset="UTF-8“
  src="http://mixi.jp/application/touch.js"></script>

</head>

<body>                               mixi          js
          mixi       for Touch
</body>
                                                        UserFlow API
</html>                                                 	

                                                                       25
opensocial.requestShareApp("VIEWER_FRIENDS", null,
function(response) {
  if (response.hadError()) {
    var errCode = response.getErrorCode();
    // do something...
  } else {
    // do something...
  }
});




                                                     26
var params = {};
params[opensocial.Activity.Field.TITLE] = "Hello!";
var activity = opensocial.newActivity(params);

opensocial.requestCreateActivity(
  activity, opensocial.CreateActivityPriority.HIGH, function
(response) {
  if (response.hadError()) {
    var code = response.getErrorCode();
    // do something...
  } else {
    // do something...
  }
});



                                                               27
Geolocation	
mixi.requestFetchGeolocation(function(response) {
  if (response.hadError()) {
    var errCode = response.getErrorCode();
    alert(response.getErrorMessage());
  } else {
    var geo = response.getData();
    if (typeof(geo) != 'undefined') {
      geo.getCurrentPosition(function(position) {
        show_map(position.coords.latitude,
position.coords.longitude);
       });
    } else {
      alert(“error");
    }
  }
});

                                                    28
Android 2.0

navigator.geolocation                                           	
        Gears                                              	
<script src=”gears_init.js”></script>
<script>
if (geo) {
  // do something
} else if (google.gears) {
  geo = google.gears.factory.create('beta.geolocation');
  geo.getCurrentPosition(function(position) {
    show_map(position.latitude, position.longitude);
  });
} else {
  alert("Your browser doesn't support geolocation.");
}
</script>
                                                                     29
http://example.com/t/?oauth_consumer_key=mixi.jp&
oauth_nonce=8edf6cde90a884f2d1af&
oauth_signature=……&
oauth_signature_method=RSA-SHA1&
oauth_timestamp=1277104016&
oauth_version=1.0&
opensocial_app_id=394&
opensocial_owner_id=12345&
opensocial_viewer_id=12345

•  RSA-SHA1
•  PC mixi
• 
   mixi Platform
                                              	
    30
PHP             	
function checkSignature() {
  $request = OAuthRequest::from_request(
                null, null, array_merge($_GET, $_POST));
  $signature_method = new OrkutSignatureMethod();

    //Check the request signature
    @$signature_valid = $signature_method->check_signature(
       $request, null, null, $_GET["oauth_signature"]);

    //Build the output object
    if ($signature_valid != true) {
        header('HTTP', true, 400);
        print "Invalid Signature.";
    }
}


                                                              31
32
•       Chrome    UA


                 --user-agent="Mozilla/5.0 (iPhone; U;
                 CPU iPhone OS 3_1 like Mac OS X;
                 ja-jp) AppleWebKit/528.18 (KHTML,
                 like Gecko) Version/4.0 Mobile/
                 7C144"	




•  Ubuntu                    Safari
                                                         33
•  opensocial-jquery          jQuery
•  mixi Touch        js
     querySelctor CSS Anim.




                                       34
• 
     Android   Location Spoofer




                                  35
•  iframe
•  mixi         Cookie

•  Safari                Cookie
   iframe        set-cookie

• 

            SAP                   mixi
             JavaScript


                                         36
•    POST       set-cookie




•           form            POST
•              Cookie   iframe
                                   37
38
•                   PC/
• 
• 
•  Android

•  mixi Graph API




                          39
40

Más contenido relacionado

Similar a gumiStudy#4 mixiアプリのスマートフォン版について

Opensocial Haifa Seminar - 2008.04.08
Opensocial Haifa Seminar - 2008.04.08Opensocial Haifa Seminar - 2008.04.08
Opensocial Haifa Seminar - 2008.04.08
Ari Leichtberg
 
Designing and Implementing a Multiuser Apps Platform
Designing and Implementing a Multiuser Apps PlatformDesigning and Implementing a Multiuser Apps Platform
Designing and Implementing a Multiuser Apps Platform
Apigee | Google Cloud
 
Html5 mobile develop tools
Html5 mobile develop toolsHtml5 mobile develop tools
Html5 mobile develop tools
Ley Liu
 
Open API Strategy, by Sensedia
Open API Strategy, by SensediaOpen API Strategy, by Sensedia
Open API Strategy, by Sensedia
Sensedia
 
Mobile Web Applications using HTML5 [IndicThreads Mobile Application Develop...
Mobile Web Applications using HTML5  [IndicThreads Mobile Application Develop...Mobile Web Applications using HTML5  [IndicThreads Mobile Application Develop...
Mobile Web Applications using HTML5 [IndicThreads Mobile Application Develop...
IndicThreads
 
Cross Platform Mobile Developmemnt
Cross Platform Mobile DevelopmemntCross Platform Mobile Developmemnt
Cross Platform Mobile Developmemnt
Soutom Dhara
 
WSO2Con Asia 2014 - Building the API-Centric Enterprise
WSO2Con Asia 2014 - Building the API-Centric EnterpriseWSO2Con Asia 2014 - Building the API-Centric Enterprise
WSO2Con Asia 2014 - Building the API-Centric Enterprise
WSO2
 

Similar a gumiStudy#4 mixiアプリのスマートフォン版について (20)

Opensocial Haifa Seminar - 2008.04.08
Opensocial Haifa Seminar - 2008.04.08Opensocial Haifa Seminar - 2008.04.08
Opensocial Haifa Seminar - 2008.04.08
 
Ajaxworld Opensocial Presentation
Ajaxworld Opensocial PresentationAjaxworld Opensocial Presentation
Ajaxworld Opensocial Presentation
 
FEDM Meetup: Introducing Mojito
FEDM Meetup: Introducing MojitoFEDM Meetup: Introducing Mojito
FEDM Meetup: Introducing Mojito
 
Designing and Implementing a Multiuser Apps Platform
Designing and Implementing a Multiuser Apps PlatformDesigning and Implementing a Multiuser Apps Platform
Designing and Implementing a Multiuser Apps Platform
 
OpenSocial
OpenSocialOpenSocial
OpenSocial
 
Html5 mobile develop tools
Html5 mobile develop toolsHtml5 mobile develop tools
Html5 mobile develop tools
 
South America 2008: Open Social For Brand Advertising and Media
South America 2008: Open Social For Brand Advertising and MediaSouth America 2008: Open Social For Brand Advertising and Media
South America 2008: Open Social For Brand Advertising and Media
 
HTML5 Webinar - Mind Storm Software
HTML5 Webinar - Mind Storm SoftwareHTML5 Webinar - Mind Storm Software
HTML5 Webinar - Mind Storm Software
 
Open API Strategy, by Sensedia
Open API Strategy, by SensediaOpen API Strategy, by Sensedia
Open API Strategy, by Sensedia
 
Mobile Web Applications using HTML5 [IndicThreads Mobile Application Develop...
Mobile Web Applications using HTML5  [IndicThreads Mobile Application Develop...Mobile Web Applications using HTML5  [IndicThreads Mobile Application Develop...
Mobile Web Applications using HTML5 [IndicThreads Mobile Application Develop...
 
Hybrid Apps / iPhoneDevCon 2010
Hybrid Apps / iPhoneDevCon 2010Hybrid Apps / iPhoneDevCon 2010
Hybrid Apps / iPhoneDevCon 2010
 
Cross Platform Mobile Developmemnt
Cross Platform Mobile DevelopmemntCross Platform Mobile Developmemnt
Cross Platform Mobile Developmemnt
 
Front-end. Global domination
Front-end. Global dominationFront-end. Global domination
Front-end. Global domination
 
Frontend. Global domination.
Frontend. Global domination.Frontend. Global domination.
Frontend. Global domination.
 
Building Cross Platform Mobile Apps Dev Tools, MBaaS, Architecture, APIs
Building Cross Platform Mobile Apps Dev Tools, MBaaS, Architecture, APIsBuilding Cross Platform Mobile Apps Dev Tools, MBaaS, Architecture, APIs
Building Cross Platform Mobile Apps Dev Tools, MBaaS, Architecture, APIs
 
Barcamphanoi Opensocial Application Development
Barcamphanoi Opensocial Application DevelopmentBarcamphanoi Opensocial Application Development
Barcamphanoi Opensocial Application Development
 
WSO2Con Asia 2014 - Building the API-Centric Enterprise
WSO2Con Asia 2014 - Building the API-Centric EnterpriseWSO2Con Asia 2014 - Building the API-Centric Enterprise
WSO2Con Asia 2014 - Building the API-Centric Enterprise
 
Serverless - Developers.IO 2019
Serverless - Developers.IO 2019Serverless - Developers.IO 2019
Serverless - Developers.IO 2019
 
Microservices for the Masses with Spring Boot, JHipster, and OAuth - South We...
Microservices for the Masses with Spring Boot, JHipster, and OAuth - South We...Microservices for the Masses with Spring Boot, JHipster, and OAuth - South We...
Microservices for the Masses with Spring Boot, JHipster, and OAuth - South We...
 
Microservices for the Masses with Spring Boot, JHipster, and OAuth - Jforum S...
Microservices for the Masses with Spring Boot, JHipster, and OAuth - Jforum S...Microservices for the Masses with Spring Boot, JHipster, and OAuth - Jforum S...
Microservices for the Masses with Spring Boot, JHipster, and OAuth - Jforum S...
 

Último

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 

Último (20)

How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 

gumiStudy#4 mixiアプリのスマートフォン版について

  • 1. 2010/10/05 gumiStudy #4 mixi Copyright 2010, All rights reserved.
  • 2. @weboo •  1999 •  2006 •  2008 gumi Platform •  2009 mixi 
 mixi 
 2
  • 3. •  •  •  mixi —  —  —  API —  C/ P —  —  Tips •  3
  • 4. •  iPhone 2010 5 mixi Touch •  2010 Android •  Windows Phone 7 •  WebKit 4
  • 5. 5
  • 6. gumi Platform mixi GREE Platform mixi for Touch •  API API •  6
  • 7. 7
  • 8. 
 
 8
  • 9. Day gumi 9
  • 10. 10
  • 11. 11
  • 12. • Android 
 •  iPhone / iPod Touch Safari 12
  • 13. • Android 
 •  iPhone / iPod Touch Safari •  UserAgent •  Canvas Home, Profile •  viewer = owner Canvas •  PC/ /Touch •  Touch PC •  Touch 13
  • 14. Mobile Phone Third Party Developers (no JavaScript) Application Proxy Application Server XHTML Media Cache Proxy swf, gif, jpg, etc. RESTful API mixi with 2-legged Social Data DB OAuth 14
  • 15. OpenSocial JavaScript API mixi Social Data Invite Activity etc. makeRequest gadgets.util.registerOnLoadHandler() SAP Server * Rewrite HTML by Shindig
  • 16. iframe 16
  • 17. 1. run_appli.pl HTTP 2. iframe HTML mixi 3. iframe SAP 4. RESTful API 5. RESTful API 6. SAP HTML
  • 18. mixi Social Data OpenSocial JavaScript API RESTful API Invite with 2-legged Activity OAuth etc. <script src=“touch.js”></script> * Request with OAuth Signature DB SAP Server 18
  • 19. •  iframe iframe SAP •  RESTful API •  XML URL •  iframe URL 
 app_id, owner_id, viewer_id •  URL OAuth Signature •  Iframe mixi js Gadgets API User Flow API
  • 20. •  Person & Friends •  Persistence •  Albums •  Invite •  Communication Feed •  Message •  Geolocation •  Request 20
  • 21. 21
  • 22. <?xml version=“1.0” encoding=“utf-8”?> <Module> <ModulePrefs title=“Hello, world!”></ModulePrefs> <Content type=“url” view=“touch” href=“http://example.com/” /> </Module> url URL 22
  • 23. / / <?xml version=“1.0” encoding=“utf-8”?> <Module> <ModulePrefs title=“Hello, world!”> <Require feature=“opensocial-0.8” /> </ModulePrefs> PC <Content type=“html” view=“home,canvas,profile”><![CDATA[ <div>Hello, mixi !</div> ]]></Content> <Content type=“url” view=“mobile” href=“http://example.com/” /> <Content type=“url” view=“touch” href=“http://example.com/t/” /> </Module> Touch 23
  • 24. URL http://example.com/t/ opensocial_app_id=xxx … ID opensocial_owner_id=xxx … ID opensocial_viewer_id=xxx … ID oauth_xxx=xxxxx … OAuth Signature owner_id = viewer_id 24
  • 25. <!DOCTYPE html> <html> <head> <meta charset=”UTF-8” /> <title> mixi for Touch</title> <script type="text/javascript" charset="UTF-8“ src="http://mixi.jp/application/touch.js"></script> </head> <body> mixi js mixi for Touch </body> UserFlow API </html> 25
  • 26. opensocial.requestShareApp("VIEWER_FRIENDS", null, function(response) { if (response.hadError()) { var errCode = response.getErrorCode(); // do something... } else { // do something... } }); 26
  • 27. var params = {}; params[opensocial.Activity.Field.TITLE] = "Hello!"; var activity = opensocial.newActivity(params); opensocial.requestCreateActivity( activity, opensocial.CreateActivityPriority.HIGH, function (response) { if (response.hadError()) { var code = response.getErrorCode(); // do something... } else { // do something... } }); 27
  • 28. Geolocation mixi.requestFetchGeolocation(function(response) { if (response.hadError()) { var errCode = response.getErrorCode(); alert(response.getErrorMessage()); } else { var geo = response.getData(); if (typeof(geo) != 'undefined') { geo.getCurrentPosition(function(position) { show_map(position.coords.latitude, position.coords.longitude); }); } else { alert(“error"); } } }); 28
  • 29. Android 2.0 navigator.geolocation Gears <script src=”gears_init.js”></script> <script> if (geo) { // do something } else if (google.gears) { geo = google.gears.factory.create('beta.geolocation'); geo.getCurrentPosition(function(position) { show_map(position.latitude, position.longitude); }); } else { alert("Your browser doesn't support geolocation."); } </script> 29
  • 31. PHP function checkSignature() { $request = OAuthRequest::from_request( null, null, array_merge($_GET, $_POST)); $signature_method = new OrkutSignatureMethod(); //Check the request signature @$signature_valid = $signature_method->check_signature( $request, null, null, $_GET["oauth_signature"]); //Build the output object if ($signature_valid != true) { header('HTTP', true, 400); print "Invalid Signature."; } } 31
  • 32. 32
  • 33. •  Chrome UA --user-agent="Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_1 like Mac OS X; ja-jp) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/ 7C144" •  Ubuntu Safari 33
  • 34. •  opensocial-jquery jQuery •  mixi Touch js querySelctor CSS Anim. 34
  • 35. •  Android Location Spoofer 35
  • 36. •  iframe •  mixi Cookie •  Safari Cookie iframe set-cookie •  SAP mixi JavaScript 36
  • 37. •  POST set-cookie •  form POST •  Cookie iframe 37
  • 38. 38
  • 39. •  PC/ •  •  •  Android •  mixi Graph API 39
  • 40. 40