Пример #1
0
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)
Пример #2
0
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'])