我有一个网站,我在其中使用 Facebook API 让用户“邀请”他们的朋友到我的网站。这些朋友将在他们的 Facebook 上收到一个应用邀请,一旦他们单击并接受它,它就会在 iFrame (在 Facebook 内)中打开我网站的一个页面。
没关系,但我想在 URL 中添加一个引用 ID。所以我可以知道他们是从谁那里得到邀请的。
是否可以向画布 URL 添加(动态)参数?
我一直无法找到如何做到这一点。
(我正在使用 JS 库)。
我有一个网站,我在其中使用 Facebook API 让用户“邀请”他们的朋友到我的网站。这些朋友将在他们的 Facebook 上收到一个应用邀请,一旦他们单击并接受它,它就会在 iFrame (在 Facebook 内)中打开我网站的一个页面。
没关系,但我想在 URL 中添加一个引用 ID。所以我可以知道他们是从谁那里得到邀请的。
是否可以向画布 URL 添加(动态)参数?
我一直无法找到如何做到这一点。
(我正在使用 JS 库)。
我可以将多个参数传递给我的画布页面。不太清楚为什么这对您或@JonCanning 不起作用。我能够成功重定向到https://apps.facebook.com/MY-APP?param1=x¶m2=y¶m3=z并在 iframe 中加载的代码中检索它们。
但是,如果您使用 apprequests 进行邀请,则无法操纵请求 url,因此不确定您打算如何操纵请求 url。这是墙柱机制吗?
但是,如果您使用 apprequests 进行邀请 - 您可以传递一个可选的“数据”参数。这可以是任意 JSON 或简单字符串。当收件人通过邀请单击时,您将在 Facebook 的请求重定向器中获得一个“request_id”参数。例如 http:YOUR-INVITE-REDIRECT-URL?request_ids=REQUEST_ID。如果来自同一个应用程序的多个邀请被发送给用户,您将获得 request_ids 作为逗号分隔的列表。您可以对请求的 facebook 图形 api 端点进行回调,并取回请求的所有信息 - 包括您传递的“数据”参数。这可能对您更有效,因为您已将所有数据嵌入到请求本身中。
此处有关对话框的更多信息:https ://developers.facebook.com/docs/reference/dialogs/requests/
传递到您的应用程序 url 的单个参数被传递到 iframe
要添加到@iyerrag 的答案,要从画布处理程序中获取数据参数,您必须回调 facebook 图形 API。该调用采用 http 查询中传递的 request_id 之一以及访问令牌。我能够使用我们应用的访问令牌(生成类似这样的创建应用令牌)。
返回的 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) )