1

在此处输入图像描述

Facebook 允许通配符域。因此,任何 *.domain.com 都可以在单个应用程序 ID 中使用。

现在我想让每个粉丝页面都Page Tab URL对我的应用程序和 URL 示例具有唯一性one.domain.comtwo.domain.com等等。

子域实际上指向主应用程序 & 脚本将子域作为唯一 ID。

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

我发现signed_request可以添加额外的参数&我对这个有点迷茫。

我可以知道如何确保每个粉丝页面都有唯一的 URL 的逻辑吗?

4

2 回答 2

4

我可以知道如何确保每个粉丝页面都有唯一的 URL 的逻辑吗?

您只能设置一个Page Tab URL(实际上是两个,一个用于 HTTP,一个用于 HTTPS)。

您不能让不同的页面使用相同的应用程序作为页面选项卡,并让它们从一开始就访问不同的 URL。

您可以做的是检查您在signed_request 参数中获得的页面ID——然后,根据页面,重定向到您喜欢的任何地方或输出任何您喜欢的地方。

于 2013-01-02T16:32:47.110 回答
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

`
于 2017-12-07T13:00:29.047 回答