Beispiel #1
0
def fb_register(request):

    """Return dictionary with signed request data."""
    if request.method == 'GET':
        return render_to_response('error.html')

    signed_request = request.POST['signed_request']
    try:
        l = signed_request.split('.', 2)
        encoded_sig = str(l[0])
        payload = str(l[1])

    except IndexError:
        return render_to_response('error.html')

    sig = base64.urlsafe_b64decode(encoded_sig + "=" * ((4 - len(encoded_sig) % 4) % 4))
    data = base64.urlsafe_b64decode(payload + "=" * ((4 - len(payload) % 4) % 4))
    data = json.loads(data)

    if data.get('algorithm').upper() != 'HMAC-SHA256':
        return render_to_response('error.html')

    else:
        expected_sig = hmac.new(settings.FACEBOOK_APP_SECRET, msg=payload, digestmod=hashlib.sha256).digest()

    if sig != expected_sig:
        return render_to_response('error.html')

    else:
        try:
            user = Reg_User.objects.get(name=data['registration']['name'],email=data['registration']['email'])
            return HttpResponseRedirect('//www.technex.in')
        except:
            user = Reg_User()
            user.name = data['registration']['name']
            user.contact = data['registration']['contact']
            user.college = data['registration']['college']
            user.gender = data['registration']['gender']
            user.birthday = data['registration']['birthday']
            user.location = data['registration']['location']['name']
            user.email = data['registration']['email']
            user.fb_ID = data['user_id']
            user.save()
            return HttpResponseRedirect('//www.technex.in')