Google Gadget 登入判断

Google Gadget 登入判断


最近因为项目上的需要,要开发一个Gadget让使用者可以使用;Gadget其实就是用一个iframe把你的网页嵌进去而已,没什么难度;你只要把声明的xml利用My Gadget加入,就可以进行测试。

image

  
   
     
 

(内文可以使用Html或是Url)

唯一碰到一个不好处理的地方就是登入验证的问题:因为在IE中iframe无法存取跨网域的cookie,所以如果有需要Session之类的东西就显得很麻烦,虽然我们直接可以转页或是自己增加参数判断,但是Gadget只要有放大缩小,他就会重新载入,这样一来登入状态就会掉了;不过,Google在帮你带iframe的时候,会增加一些hash参数,这些参数可以让我们用来判断使用者,例如:

#st=c%3Dig%26e%3DAPu7ico1vFP/WSFEcNdM%252B0FYiw4VTydWC2kmiKzvQ9xikzwXuIlnlsQ0DIK8XlJcVcw71b9%252B5M8%252BimSJARIlZd612IAoDy1PW0RB1Krl1HOWa2B5gRkuiqKCvpsh9gMz0c7o4I1FfeoO&gadgetId=112927440424110499518&gadgetOwner=107364228776182021982&gadgetViewer=107364228776182021982&rpctoken=1954845592&ifpctok=1954845592

当然,这些参数要透过Gadget API来存取会比较方便,我们可以透过gadgetOwner或是gadgetViewer来判断来源端的使用者,这边提供一个小范例:

我先透过gadgets.util.getUrlParameters来取得gadgetViewer,然后回传到我的网站,借由这个ID来处理…


  
  
  
  var wrappedpage = "http://mygadget.com.tw/google";
  
  function init() 
  {      
	var id = gadgets.util.getUrlParameters()["gadgetViewer"]; 
    document.getElementById("wrapped").src = wrappedpage+ "?gadgetViewer=" + id;
	document.write(wrappedpage+ "?gadgetViewer=" + id);
  }
  
  gadgets.util.registerOnLoadHandler(init);
  

  
  
]]>


后面我的做法就比较偷懒,因为其实只要有一个可以识别的唯一ID,其实怎么做都可以:我的做法是把他弄成ASP.NET Session ID,这样不管存取什么都方便很多,而且就算回到原网站也不需要再登入一次;不过要特别注意Session ID要在global中处理,平常的Session ID可是只读的哦。

相关连结:

MyGadget

Google Gadget开发相关

Google Gadget登入Cookie判断

Dotblogs 的标签:Gadget