Какую библиотеку Django использовать для API Graph Facebook? - PullRequest
1 голос
/ 23 ноября 2010

В настоящее время я разрабатываю приложение в Django и пытаюсь реализовать аутентификацию Facebook и запросы к API Graph. Я видел несколько разных библиотек, но как лучше всего сделать следующее:

  1. Иметь логин пользователя через Facebook.
  2. Django создает для них нового пользователя и добавляет их uid и oauth token.
  3. Затем я могу звонить в Graph API с помощью Facebook Python SDK.

Я видел этот пример . Это так просто на обычном Джанго?

Ответы [ 3 ]

2 голосов
/ 15 апреля 2012

Моя компания создала библиотеку, которая делает интеграцию Facebook с вашим приложением Django максимально простой (мы, вероятно, создали 10-20 приложений с библиотекой, в том числе с огромным объемом трафика, так что она прошла боевые испытания).

pip install ecl-facebook==1.2.7

В ваших настройках добавьте значения для FACEBOOK_KEY, FACEBOOK_SECRET, FACEBOOK_SCOPE, FACEBOOK_REDIRECT_URL и PRIMARY_USER_MODEL. Вам также нужно добавить ecl_facebook.backends.FacebookAuthBackend к вашему AUTHENTICATION_BACKENDS. Например, в settings.py :

# These aren't actual keys, you'll have to replace them with your own :)
FACEBOOK_KEY = "256064624431781"
FACEBOOK_SECRET = "4925935cb93e3446eff851ddaf5fad07"
FACEBOOK_REDIRECT_URL = "http://example.com/oauth/complete"
FACEBOOK_SCOPE = "email"

# The user model where the Facebook credentials will be stored
PRIMARY_USER_MODEL = "app.User"

AUTHENTICATION_BACKENDS = (
    # ...
    'ecl_facebook.backends.FacebookAuthBackend',
)

Добавьте некоторые представления в ваш views.py для обработки логики до и после аутентификации.

from django.contrib.auth import authenticate, login
from django.http import HttpResponseRedirect

from ecl_facebook.django_decorators import facebook_begin, facebook_callback
from ecl_facebook import Facebook

from .models import User

# ...

@facebook_begin
def oauth_facebook_begin(request):
    # Anything you want to do before sending the user off to Facebook
    # for authorization can be done here.
    pass

@facebook_callback
def oauth_facebook_complete(request, access_token, error):
    if error is None:
        facebook = Facebook(token)
        fbuser = facebook.me()
        user, _ = User.objects.get_or_create(facebook_id=fbuser.id, defaults={
            'access_token': access_token})
        user = authenticate(id=user.id)
        login(request, user)
        return HttpResponseRedirect("/")
    else:
        # Error is of type ecl_facebook.facebook.FacebookError. We pass
        # the error back to the callback so that you can handle it
        # however you want.
        pass

Теперь просто подключите эти URL в файле urls.py , и все готово.

# ...

urlpatterns = patterns('app.views',
    # ...
    url(r'^oauth/facebook/begin$', 'oauth_facebook_begin'),
    url(r'^oauth/facebook/complete$', 'oauth_facebook_complete'),
)

Надеюсь, это поможет!

P.S. Вы можете прочитать остальные документы здесь .

1 голос
/ 09 февраля 2011

Мы много занимаемся разработкой приложений Facebook, где я работаю, и поэтому мы разработали библиотеку с открытым исходным кодом , которая делает все об этом по-настоящему простым.

from django.http import HttpResponse
from fandjango.decorators import facebook_authorization_required

@facebook_authorization_required
def foo(request, *args, **kwargs):
    return HttpResponse("Your name is %s" % request.facebook_user.first_name)
0 голосов
/ 07 января 2011

Я рекомендую https://github.com/egnity/fb.py. Мгновенно запустил мое приложение для Facebook на Django.Он включает в себя промежуточное программное обеспечение, которое позволяет запускать код, подобный следующему:

для идентификатора пользователя:

user_id = request.facebook.graph().get_object("me")['id']

для маркера oauth:

user_token = request.facebook.auth_token

Затем вы можете добавить вышесказанное к вашей модели пользователя, как вам угодно.Для выполнения вызовов API API вы все равно можете использовать промежуточное программное обеспечение fb.py - нет необходимости использовать примитив python-sdk.Код user_id, приведенный выше, является прекрасным примером вызова API Graph.С fb.py вы можете сделать гораздо больше.Загрузка включает в себя пример проекта django, который поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...