我有一个网站,我使用Facebook API让用户邀请他们的朋友加入我的网站。这些朋友将在他们的Facebook上获得App邀请,一旦他们点击并接受它,它就会在iFrame(Facebook内)中打开我的网站页面。
这一切都很好,但我想在URL中添加一个引用ID。所以我可以告诉他们谁收到邀请。
是否可以向画布URL添加(动态)参数?
我一直无法知道如何做到这一点。
(我正在使用JS库)。
答案 0 :(得分:3)
我可以将多个参数传递给我的画布页面。不太清楚为什么这不适合你或@JonCanning。我能够成功重定向到https://apps.facebook.com/MY-APP?param1=x¶m2=y¶m3=z并在iframe中加载的代码中检索它们。
如果您使用邀请的apprequests,则无法操纵请求网址,因此不确定您打算如何操作请求网址。这是一个墙贴机制吗?
但是,如果你使用apprequests进行邀请 - 你可以传递一个可选的“数据”参数。这可以是任意JSON或简单字符串。当收件人通过邀请点击时,将在Facebook的请求重定向器中向您提供“request_id”参数。例如HTTP:您-INVITE重定向的URL request_ids = REQUEST_ID?如果来自同一应用程序的多个邀请被发送给用户,您将以逗号分隔列表的形式获取request_ids。您可以回拨facebook图api端点以获取请求,并获取请求的所有信息 - 包括您传递的“数据”参数。由于您已在请求中嵌入了所有数据,因此这可能对您更有效。
有关对话框的更多信息:https://developers.facebook.com/docs/reference/dialogs/requests/
答案 1 :(得分:1)
传递到您的应用网址的单个参数会传递到iframe
答案 2 :(得分:0)
要添加到@ iyerrag的答案,要从画布处理程序中获取数据参数,您必须回调到facebook图形API。该调用将获取http查询中传递的request_ids之一以及访问令牌。我能够使用我们应用程序的访问令牌(生成类似Creating App Token的内容)。
返回的JSON文档包含您在密钥'数据'中的数据参数中传递的值。
以下是Python中的要点:
requestIDStr = self.request.get('request_ids','')
requestIDs = requestIDStr.split(',')
requestID = requestIDs[0]
if requestID:
url = """https://graph.facebook.com/{}?access_token={}""".format(requestID, fbAccessToken)
try:
response = urllib2.urlopen(url)
responseDoc = response.read()
jsonResponse = json.loads(responseDoc)
dataParam = jsonResponse['data']
except Exception as e: logging.warning('unable to retrieve data param: {}'.format(e) )