def twitterpost(request): print(request) # make sure to get image from post if request.method == 'POST': try: image_data = request.POST['imgBase64'] format, imgstr = image_data.split(';base64,') ext = format.split('/')[-1] data = ContentFile(base64.b64decode(imgstr)) fs = FileSystemStorage() fs._location = settings.TWITTERPOST_URL file = request.user.username + "twitter_image." + ext request.session['imgBase64'] = fs.save(file, data) except: print("Oops!", sys.exc_info()[1], "occured.") try: image = os.path.join(settings.TWITTERPOST_URL, request.session['imgBase64']) access_token = request.session['access_token'] auth = tweepy.OAuthHandler(settings.TWITTER_ACCESS_KEY, settings.TWITTER_ACCESS_SECRET) auth.set_access_token(access_token[0], access_token[1]) api = tweepy.API(auth) api.update_with_media(image, "") fs = FileSystemStorage() fs._location = settings.TWITTERPOST_URL fs.delete( os.path.join(settings.TWITTERPOST_URL, request.session['imgBase64'])) data = { "url_type": "twitter_profile_redirect", "url": "https://www.twitter.com/" + api.me().screen_name } return JsonResponse(data) except: auth = tweepy.OAuthHandler(settings.TWITTER_ACCESS_KEY, settings.TWITTER_ACCESS_SECRET, settings.TWITTER_CALLBACK_URL) authorization_url = auth.get_authorization_url() request.session['oauth_token'] = auth.request_token['oauth_token'] request.session['oauth_token_secret'] = auth.request_token[ 'oauth_token_secret'] data = {'url': authorization_url, 'url_type': 'auth_url_redirect'} return JsonResponse(data)
def callback(request): image = os.path.join(settings.TWITTERPOST_URL, request.session['imgBase64']) print(image) oauth_token = request.GET.get('oauth_token') oauth_token_secret = request.session["oauth_token_secret"] oauth_verifier = request.GET.get('oauth_verifier') auth = tweepy.OAuthHandler(settings.TWITTER_ACCESS_KEY, settings.TWITTER_ACCESS_SECRET) print(auth.__str__()) auth.get_authorization_url() auth.request_token['oauth_token'] = oauth_token auth.request_token['oauth_token_secret'] = oauth_token_secret try: request.session['access_token'] = auth.get_access_token(oauth_verifier) except tweepy.TweepError: print('Error! Failed to get access token.') return HttpResponse("<h1>Failed to log in</h1>") api = tweepy.API(auth) api.update_with_media(image, "") fs = FileSystemStorage() fs._location = settings.TWITTERPOST_URL fs.delete(request.session['imgBase64']) print(api.me().screen_name) data = { "url_type": "twitter_profile_redirect", "url": "https://www.twitter.com/" + api.me().screen_name } return redirect(data['url'])