Tôi đang sử dụng Bộ công cụ xã hội Python và Bộ công cụ Django OAuth để quản lý tài khoản người dùng của mình và hạn chế quyền truy cập vào API REST của tôi.Tạo mã thông báo truy cập theo lập trình với Bộ công cụ Django OAuth2
tôi có thể tạo ra một mã thông báo cho người dùng rằng đăng ký bằng tay với ứng dụng của tôi bằng cách sử dụng thường xuyên
curl -X POST -d "grant_type=password&username=<user_name>&password=<password>" -u"<client_id>:<client_secret>" http://localhost:8000/o/token/
Nhưng khi tôi đăng ký người dùng của tôi với PSA bằng thẻ truy cập của họ, tôi muốn tạo mã thông báo Bộ công cụ OAuth2 cho ứng dụng của riêng tôi và trả lại nó dưới dạng JSON cho ứng dụng để nó có thể sử dụng nó để tạo yêu cầu với API của tôi.
Hiện tại, tôi tạo mã thông báo chỉ cần sử dụng generate_token
từ oauthlib, đó là thực tiễn tốt? Tôi có nên xem xét các yếu tố khác không?
from oauthlib.common import generate_token
...
@psa('social:complete')
def register_by_access_token(request, backend):
# This view expects an access_token GET parameter, if it's needed,
# request.backend and request.strategy will be loaded with the current
# backend and strategy.
token = request.GET.get('access_token')
user = request.backend.do_auth(token)
if user:
login(request, user)
app = Application.objects.get(name="myapp")
# We delete the old one
try:
old = AccessToken.objects.get(user=user, application=app)
except:
pass
else:
old.delete()
# We create a new one
tok = generate_token()
AccessToken.objects.get_or_create(user=user,
application=app,
expires=now() + timedelta(days=365),
token=tok)
return "OK" # I will eventually return JSON with the token
else:
return "ERROR"
Câu hỏi thực sự thú vị. Tôi không tìm thấy bất kỳ câu trả lời hữu ích khác để I0m làm việc dựa trên bài đăng blog của bạn – vabada
Tôi đề nghị bạn hãy xem https://github.com/PhilipGarnero/django-rest-framework-social-oauth2 giúp bạn làm chính xác điều này một cách sạch sẽ. –