2012-04-25 129 views
4

我有一个网站,我使用Facebook API让用户邀请他们的朋友到我的网站。这些朋友将在他们的Facebook上获得应用邀请,一旦他们点击并接受它,它会在我的网站(在Facebook内)打开一个页面。带有参数的Facebook画布网址?

这一切都很好,但我想添加一个引用ID的URL。所以我可以告诉他们是谁得到了邀请。

是否可以将(动态)参数添加到画布URL?

我还没有能够找到如何做到这一点。

(我正在使用JS库)。

回答

3

我能多PARAMS传递给我的画布页。不太清楚为什么这不适合你或@JanCanning。我能够成功重定向到https://apps.facebook.com/MY-APP?param1=x&param2=y&param3=z并在加载到iframe中的代码中检索它们。

如果您对邀请使用apprequests,则无法操作请求url,因此不知道您计划如何操作请求url。这是一个墙贴机制吗?

但是,如果您使用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

传递到Google Apps网址一个参数传递到iframe中

http://apps.facebook.com/app_name/?param=hello

+0

你有这方面的任何文档? Facebook似乎不会传递参数。 – Joe 2012-05-08 16:24:18

+0

不,只是通过我自己的测试,它似乎只适用于单个参数,所以我会修改我的答案 – 2012-05-30 14:53:08

+0

顺便说一句,app_data获取参数做到这一点 – Joe 2012-05-30 21:47:14

0

要添加到@ iyerrag的回答,从你的画布处理程序中获取数据PARAM,你要回调到Facebook的图形API。该调用采用http查询中传递的request_id之一,也是一个访问令牌。我能够使用我们的应用程序的访问令牌(生成像这样的Creating App Token)。

返回的JSON文档包含您在关键'data'中的数据参数中传递的值。

这里的要点,在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))