Facebook разрешил подстановочный домен. Таким образом, любой * .domain.com можно использовать в одном идентификаторе приложения.
Теперь я хочу, чтобы на каждой странице Fan будет уникальный Page Tab URL
в моем приложении и пример URL-адресов one.domain.com
, two.domain.com
и других.
Субдомен фактически указывает на основное приложение и скрипт, который получит подобъект как уникальный идентификатор.
https://developers.facebook.com/docs/appsonfacebook/pagetabs/
Я обнаружил, что signed_request
может добавить дополнительный параметр, и я немного потерял его.
Могу ли я узнать логику, как убедиться, что каждая страница Fan будет иметь уникальный URL-адрес?
Могу ли я узнать логику, как убедиться, что каждая страница Fan будет иметь уникальный URL-адрес?
Вы можете установить только один URL-адрес страницы (ну два на самом деле, один для HTTP и один для HTTPS).
Вы не можете использовать разные страницы для одного и того же приложения в качестве вкладки страницы и иметь доступ к различным URL-адресам с самого начала.
Что вы можете сделать, это проверить идентификатор страницы, который вы получаете внутри параметра signed_request, и после этого, в зависимости от страницы, перенаправлять туда, где хотите, или выводить все, что вам нравится.
<%@ 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 `