के साथ प्रोग्रामिक रूप से एक एक्सेस टोकन जेनरेट करना मैं अपने उपयोगकर्ता खातों को प्रबंधित करने और मेरे आरईएसटी एपीआई तक पहुंच प्रतिबंधित करने के लिए पाइथन सोशल ऑथ और डैंजो ओथ टूलकिट का उपयोग कर रहा हूं।Django OAuth2 Toolkit
मैं नियमित
का उपयोग कर उपयोगकर्ताओं है कि मेरे ऐप के साथ मैन्युअल रूप से साइन अप करने के लिए एक टोकन बना सकते हैंcurl -X POST -d "grant_type=password&username=<user_name>&password=<password>" -u"<client_id>:<client_secret>" http://localhost:8000/o/token/
लेकिन जब मैं उनके पहुँच टोकन से पीएसए के साथ अपने उपयोगकर्ताओं को रजिस्टर, मैं बनाना चाहते हैं अपने स्वयं के ऐप के लिए एक OAuth2 Toolkit टोकन और क्लाइंट को JSON के रूप में वापस लौटाएं ताकि यह मेरे एपीआई के साथ अनुरोध करने के लिए इसका उपयोग कर सके।
वर्तमान में, मैं ओथिथ से टोकन उत्पन्न करता हूं, क्या यह अच्छी प्रथा है? क्या मुझे अन्य कारकों पर विचार करना चाहिए?
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"
वास्तव में दिलचस्प सवाल है। मुझे कोई अन्य सहायक उत्तर नहीं मिला, इसलिए I0m आपके ब्लॉग पोस्ट – vabada
पर आधारित काम करता है, मेरा सुझाव है कि आप https://github.com/PhilipGarnero/django-rest-framework-ocial-oauth2 पर एक नज़र डालें जो आपको यह करने में मदद करता है एक साफ तरीके से। –