2013-01-02 34 views
1

enter image description here如何製作動態頁面標籤網址?

Facebook允許通配符域。所以任何* .domain.com都可以在單個應用程序ID中使用。

現在我想讓每個粉絲頁面都有獨特的Page Tab URL給我的應用程序和URL的例子one.domain.com,two.domain.com等等。

該子域實際上指向主應用程序&腳本將獲得該子域作爲唯一的ID。

https://developers.facebook.com/docs/appsonfacebook/pagetabs/

我發現signed_request可以添加額外的參數&我有點失去了這一個。

我可以知道邏輯如何確保每個粉絲頁都具有唯一的網址嗎?

回答

4

我可以知道邏輯如何確保每個粉絲頁都有唯一的網址嗎?

只能設置一個標籤URL(以及兩人竟,一個用於HTTP,另一個用於HTTPS)。

不能讓不同的頁面使用同一個應用程序作爲頁面選項卡,並讓他們從一開始就訪問不同的URL。

你可以做的是檢查你在signed_request參數裏面得到的頁面id,然後根據頁面重定向到你喜歡的任何地方或者輸出任何你喜歡的東西。

+0

Phewww ..我知道了,非常感謝你@CBroe。 – user1286499

+0

問題:'signed_request'只加載一次嗎?當我刷新或點擊其他鏈接時,$ signed_request ['page'] ['id']'從陣列中消失 – user1286499

+1

它只會在首次載入iframe時發送到您的應用。一旦您開始在iframe中的自己的應用程序中導航,該參數將不再存在。我通常只是將它保存到會話中(並在那裏更新它,如果它再次通過,則可以通過在用戶喜歡fanpage後自動重新加載)。 – CBroe

0
<%@ page import ="java.io.*,java.util.*" %> <%@ page import = "java.util.Arrays,javax.crypto.Mac,javax.crypto.SecretKey,javax.crypto.spec.SecretKeySpec" %> <%@ page import = "org.json.simple.parser.*,org.apache.commons.codec.binary.Base64" %> <%@ page import = "java.io.UnsupportedEncodingException,javax.xml.bind.DatatypeConverter" %> <% 

if (request.getParameter("signed_request") != null) { 
    String input = request.getParameter("signed_request"); 
    //input ="q3v8X8hbmkKXaF_DZaLBPapMPVjMgpq8bZe-SmYc6Fs.eyJhbGdvcml0aG0iOiJITUFDLVNIQTI1NiIsImlzc3VlZF9hdCI6MTUxMjYyOTY5MiwicGFnZSI6eyJpZCI6IjEzOTg4MTM1MDM3NTUyMzEiLCJhZG1pbiI6dHJ1ZSwibGlrZWQiOnRydWV9LCJ1c2VyIjp7ImNvdW50cnkiOiJpbiIsImxvY2FsZSI6ImVuX0dCIiwiYWdlIjp7Im1pbiI6MjF9fX0"; 
    String secretKey = "d8e6e697b9c958a8ee8f2e"; 
    int max_age = 3600; 
    try 
    { 
     String[] split = input.split("[.]", 2); 
     String encoded_sig = split[0]; 
     String encoded_envelope = split[1]; 
     JSONParser parser = new JSONParser(); 
     // check 
     //out.println("<br>"+ new String(new Base64(true).decode(encoded_envelope))); 
     Map envelope = (Map) parser.parse(new String(new Base64(true).decode(encoded_envelope))); 
     String algorithm = (String) envelope.get("algorithm"); 
     if (!algorithm.equals("HMAC-SHA256")) { 
      throw new Exception("Invalid request. (Unsupported algorithm.)"); 
     } 
     if (((Long) envelope.get("issued_at")) < System.currentTimeMillis()/1000 - max_age) { 
      throw new Exception("Invalid request. (Too old.)"); 
     } 
     byte[] key = secretKey.getBytes(); 
     SecretKey hmacKey = new SecretKeySpec(key, "HMACSHA256"); 
     Mac mac = Mac.getInstance("HMACSHA256"); 
     mac.init(hmacKey); 
     byte[] digest = mac.doFinal(encoded_envelope.getBytes()); 
     if (!Arrays.equals(new Base64(true).decode(encoded_sig), digest)) { 
      throw new Exception("Invalid request. (Invalid signature.)"); 
     } 
     String pageId = ((Map)envelope.get("page")).get("id").toString(); 
     if(pageId.equals("1398813503755231")){ 
      response.sendRedirect("https://yourdomain.com/1111"); 
     } 
     else if(pageId.equals("151433128812548")){ 
      response.sendRedirect("https://yourdomain1.com/2222"); 
     } } 
    catch(Exception e) 
    { 
     out.println("error"+e); 
    } } %> <html> <head> Facebook Store <script> var appId = 'your app id'; var pageId=''; window.fbAsyncInit = function() { 
    FB.init({ 
     appId   : appId, 
     autoLogAppEvents : true, 
     xfbml   : true, 
     version   : 'v2.11' 
    }); }; (function(d, s, id){ 
    var js, fjs = d.getElementsByTagName(s)[0]; 
    if (d.getElementById(id)) {return;} 
    js = d.createElement(s); js.id = id; 
    js.src = "https://connect.facebook.net/en_US/sdk.js"; 
    fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk')); function createPageTab(){ 
    FB.ui(
     { 
      method: 'pagetab', 
      redirect_uri:'https://9d5b71a7.ngrok.io/facebook-store.jsp' 
     }, 
     function(response) { 
      console.log(JSON.stringify(response)); 
      if (response != null && response.tabs_added != null) { 
       for(pageid in response.tabs_added){ 
         pageId = pageid; 
       } 
      } 
     } 
    ); } 

function viewPageTab(){ 
    var url = 'https://facebook.com/pages/-/'+pageId+'?sk=app_'+appId; 
    window.open(url,'_blank'); } 

</script> </head> <body> 
    <button onClick="createPageTab()" >Connect your store with facebook </button> 
    <button onClick="viewPageTab();" > View your Store </button> </body> </html 

> 

1. ` 

> Blockquote 

`