2012-04-25 3 views
4

나는 Facebook API를 사용하여 내 친구가 내 사이트에 친구를 초대 할 수있는 웹 사이트를 가지고 있습니다. 이 친구들은 Facebook에 App Invite를 가져다 주며 클릭하고 수락하면 iFrame (Facebook 내) 옆에 내 사이트 페이지를 엽니 다.params가있는 Facebook 캔버스 URL?

괜찮습니다.하지만 URL에 참조 ID를 추가하고 싶습니다. 그래서 나는 그들이 초대장을 누구에게서 얻었는지 알 수 있습니다.

(동적) 매개 변수를 캔버스 URL에 추가 할 수 있습니까 ??

나는 이것을 수행하는 방법을 찾을 수 없었습니다.

(저는 JS 라이브러리를 사용하고 있습니다). 귀하의 응용 프로그램의 URL로 전달

답변

3

에 전달됩니다. 왜 이것이 당신이나 @JonCanning을 위해 작동하지 않는지 잘 모르겠습니다. 성공적으로 https://apps.facebook.com/MY-APP?param1=x&param2=y&param3=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/

1

하나의 매개 변수는 내 캔버스 페이지에 여러 PARAMS을 통과 할 수 있어요 iframe을

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

+0

이에 대한 모든 문서를 가지고 있습니까? Facebook은 매개 변수를 전달하지 않는 것 같습니다. – Joe

+0

아니, 그냥 내 자신의 테스트를 통해, 그리고 그것은 단지 하나의 매개 변수에 대한 작동하도록 보인다 그래서 내 대답을 수정합니다 –

+0

btw app_data get param이 않습니다 – Joe

0

캔버스 핸들러 내에서 데이터 PARAM을 잡아, @ iyerrag의 대답에 추가하려면, 당신은 다시 페이스 북의 그래프 API로 호출 할 수 있습니다. 이 호출에는 http 쿼리에서 전달 된 request_id 중 하나와 액세스 토큰 중 하나가 사용됩니다. 앱의 액세스 토큰을 사용할 수있었습니다 (Creating App Token 같은 것을 생성했습니다).

반환 된 JSON 문서에는 'data'키의 데이터 매개 변수에 전달한 값이 들어 있습니다.

여기서 요점은 파이썬에서,이다 :

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))