Django view для вкладки фан-страницы Facebook - PullRequest
0 голосов
/ 28 октября 2011

Я создаю вкладку страницы для своего сайта, ее необходимо настроить по идентификатору страницы в Facebook, поэтому я создал для этого представление.

@csrf_exempt
def iframe_playlist(request):
code = request.REQUEST.get("signed_request", None)
code = 'none' if code == None else 'none'
return HttpResponse(code) #<<< I tried to output the request 
                #<<< and see if the request exists. but it always shows to none.
code = code.split('.', 2)
code = facebook.base64_url_encode(code)
code = json.loads(code)
uid = json['user_id']
site_user = get_object_or_404(FacebookProfile, uid=uid)
app = get_object_or_404(AppPage, user=site_user.user)
playlist = app.playlist
image = app.image if app.image else None

1 Ответ

0 голосов
/ 28 октября 2011

Я вижу несколько разных ошибок, самая важная в этой строке:

code = 'none' if code == None else 'none'

В основном это говорит:

code = 'none' # Always!

Неудивительно, что в следующих строках всегда выводится "none";) Более того, вы должны использовать if code is None вместо if code == None, это очень важно!

Что вам действительно нужно, это изменить эти строки:

 code = request.REQUEST.get("signed_request", None)
 code = 'none' if code == None else 'none'

на:

code = request.REQUEST.get("signed_request", 'none')

И позже, когда код заработает, вам даже не нужно будет устанавливать строковое значение «none» - это просто для отладки, как я понимаю.

Кроме того, «sign_request» долженпередаваться как POST на Facebook.И согласно Django docs :

Настоятельно рекомендуется использовать GET и POST вместо REQUEST, потому что первые более явные.

Если первая подсказка не помогает, проверьте, правильно ли указан ваш URL, в соответствии с этим: Подписанный запрос на вкладку iframe в Facebook всегда пуст

...