def tweet(status): ENDPOINT = 'https://api.twitter.com/1.1/statuses/update.json' CONFIG = cfg['TWITTER_INFO'] twitter = OAuth( CONFIG['API_KEY'], CONFIG['API_SECRET'], CONFIG['ACCESS_TOKEN'], CONFIG['ACCESS_SECRET'] ) res = twitter.post( ENDPOINT, params={"status": status} ) if res.status_code == 200: return True else: return False
import json from requests_oauthlib import OAuth1Session import time CK = "9hHpHgwHErwwDNkN2vrUtfPek" CS = "TiuYZh9xqzHYFeHxmGffgWnAFMWZtBvvYSftCHgpRgB7M67sJL" AT = "133292143-9TTJxuj4HcfSkMkZlHy0Sz3gbd0XGcEiBGkMi1jc" ATS = "IQ0ksP6UX7zgM5H2ejxt8lytDnTIs80zhX1VR6Baaxm6z" twitter = OAuth1Session(CK, CS, AT, ATS) #認証処理 url = "https://api.twitter.com/1.1/statuses/user_timeline.json" params = {'count': 5} res = twitter.get(url, params=params) """ if res.status_code == 200: #正常通信出来た場合 timelines = json.loads(res.text) #レスポンスからタイムラインリストを取得 for line in timelines: #タイムラインリストをループ処理 print(line['user']['name']+'::'+line['text']) print(line['created_at']) print('*******************************************') else: #正常通信出来なかった場合 print("Failed: %d" % res.status_code) """ while True: time.sleep(1) cursor = -1 while cursor != 0: # 情報取得 api = 'https://api.twitter.com/1.1/followers/list.json' params = {
#!/usr/bin/env python3 #coding:utf-8 ''' This code is for tweet posting with images to Twitter API. ''' import json import os from requests_oauthlib import OAuth1Session # 認証(環境変数からAPIキー・シークレット呼び出し) CONSUMER_KEY = os.environ['tw_consumer_key01'] CONSUMER_SECRET = os.environ['tw_consumer_secret01'] ACCESS_TOKEN = os.environ['tw_access_token01'] ACCESS_TOKEN_SECRET = os.environ['tw_access_token_secret01'] TWITTER = OAuth1Session(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET) URL_MEDIA = "https://upload.twitter.com/1.1/media/upload.json" URL_TEXT = "https://api.twitter.com/1.1/statuses/update.json" PATH_LIST_IMAGES = [ "/Users/vbit/Desktop/images/1.png", "/Users/vbit/Desktop/images/2.jpg", "/Users/vbit/Desktop/images/3.jpg", "/Users/vbit/Desktop/images/4.jpg" ] # OAuth認証 セッションを開始 TWITTER = OAuth1Session(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET) MEDIA_IDS = "" # 画像の枚数分ループ
def post(event, context): logger = logging.getLogger() logLevel = logging.INFO logger.info(event) API_KEY = os.environ['API_KEY'] API_SECRET = os.environ['API_SECRET'] get_user_url = 'https://api.twitter.com/1.1/users/show.json' if 'body' not in event: logger.error('400 No body in event') raise ce.CustomError(400, 'No body in event') request_body = json.loads(event['body']) access_token = request_body['access_token'] if 'access_token' not in request_body: logger.error('400 No access_token in body') raise ce.CustomError(400, 'No access_token in body') try: oauth_token = access_token['oauth_token'] oauth_token_secret = access_token['oauth_token_secret'] user_id = access_token['user_id'] screen_name = access_token['screen_name'] twitter = OAuth1Session(API_KEY, API_SECRET, oauth_token, oauth_token_secret) params = { 'user_id': user_id, 'screen_name': screen_name } twitter_response = twitter.get(get_user_url, params=params) user = json.loads(twitter_response.text) # profile_image_url_httpsの末尾の「_normal」を削除して、originalサイズのURLを生成 root, ext = os.path.splitext(user['profile_image_url_https']) profile_image_url = root[0:-7] + ext icon_data = base64.b64encode(requests.get(profile_image_url).content) icon64 = 'data:image/png;base64,' + icon_data.decode('utf-8') except Exception as e: logger.error(e) raise ce.CustomError(500, 'Twitter Error') headers = { 'Access-Control-Allow-Origin': '*', 'Access-Control-Allow-Headers': 'Content-Type,Access-Control-Allow-Origin' } body = { 'icon': icon64 } logger.info(body) response = { 'statusCode': 200, 'headers': headers, 'body': json.dumps(body) } return response
import config # ツイッターAPIトークン取得 import util_func as uf # 自作関数モジュール呼び出し import tweepy import numpy as np from requests_oauthlib import OAuth1Session import json consumer_key = config.consumer_key consumer_secret = config.consumer_secret access_token = config.access_token access_token_secret = config.access_token_secret twitter = OAuth1Session(consumer_key, consumer_secret, access_token, access_token_secret) # tweepy auth = tweepy.OAuthHandler(consumer_key, consumer_secret) auth.set_access_token(access_token, access_token_secret) api = tweepy.API(auth, wait_on_rate_limit=True) # 利用禁止期間の解除を待機後に実行する class GetTweetFromTrend: def __init__(self, n_trends, woe_id=23424856): # Twitter API self.n_trends = n_trends # トレンド取得数 self.woe_id = woe_id # エリアID # twitter api トレンドリスト取得 def get_trends(self): trends = api.trends_place(
def __post_init__(self) -> None: self.oauth = OAuth1Session(self.schoology_key, self.schoology_secret)
from dateutil import parser import boto3 import random import hashlib import base64 import requests from xml.sax.saxutils import * ## Twitter系の変数 # OAuth認証 セッションを開始 CK = os.getenv('Twitter_Consumer_Key') # Consumer Key CS = os.getenv('Twitter_Consumer_Secret_Key') # Consumer Secret AT = os.getenv('Twitter_Access_Token_Key') # Access Token AS = os.getenv('Twitter_Access_Token_Secret') # Accesss Token Secert twitter = OAuth1Session(CK, CS, AT, AS) twitterListID = 795464117347721216 # TwitterリストID twitterListCount = 500 # 一度に取得するリストのアカウント数 twitterFav = 20 # 集計対象RT数 twitterRT = 20 # 集計対象Fav数 ## DynamoDB系の変数 tableNameSequence = 'sequences' # AtomicCounter用のテーブル名 tableSequensesColumnName = 'my_table' # AtomicCounter用のカラム名 tableTweetName = 'nazo-tweet-tables' # Twitter謎格納用のテーブル名 #テスト用 #tableNameSequence = 'sequences-test' #tableTweetName = 'nazo-tweet-tables-test' regionName = 'ap-northeast-1' # 使用するリージョン名
#read config file config = ConfigParser.SafeConfigParser() try: config.read('twitter.conf') CK = config.get('twitter', 'CK') CS = config.get('twitter', 'CS') AT = config.get('twitter', 'AT') AS = config.get('twitter', 'AS') except: print "Error occured in reading config" exit() print("CK: " + CK) print("CS: " + CS) print("AT: " + AT) print("AS: " + AS) session = OAuth1Session(CK, CS, AT, AS) url = 'https://api.twitter.com/1.1/statuses/home_timeline.json' params = {'count': 100} TweetList = [] for i in range(1): req = session.get(url, params=params) if req.status_code == 200: timeline = json.loads(req.text) for tweet in timeline: TweetList.append(tweet["text"]) else: print("Error: %d" % req.status_code) # time.sleep(240)
def session(self): return OAuth1Session(self.client_key, client_secret=self.client_secret)
# coding: utf-8 from requests_oauthlib import OAuth1Session import data url = "https://api.twitter.com/1.1/account/update_profile.json" params = {"name":"野獣先輩","description":"二十四歳、学生です","url":"114514.com","location":"下北沢"} twitter = OAuth1Session(data.CK, data.CS, data.AT, data.AS) req = twitter.post(url, params = params)
import sys import json from requests_oauthlib import OAuth1Session import config from time import sleep def main(): url_mentions = "https://api.twitter.com/1.1/statuses/user_timeline.json" url_retweet = "https://api.twitter.com/1.1/statuses/retweet/1147182723179532288.json" url_unretweet = "https://api.twitter.com/1.1/statuses/unretweet/1147182723179532288.json" params = {"count": 1} res = oauth.get(url=url_mentions) if res.status_code == 200: fp = open("./test.json", "w") fp.write(res.text) fp.close() else: print(res.text) if __name__ == '__main__': try: oauth = OAuth1Session(config.Twi_CK, config.Twi_CS, config.Twi_AT, config.Twi_ATS) except: print("oauth error\n") sys.exit(1) main()
TUMBLR_POST_CACHE_DICT[unique_ident] = resp fref = open('tumblr_post_data.json', 'w') dumped_data = json.dumps(TUMBLR_POST_CACHE_DICT) fref.write(dumped_data) fref.close() return TUMBLR_POST_CACHE_DICT[unique_ident] #AUTHORIZATION request_token_url = 'http://www.tumblr.com/oauth/request_token' authorize_url = 'http://www.tumblr.com/oauth/authorize' access_token_url = 'http://www.tumblr.com/oauth/access_token' # STEP 1: Obtain request token oauth_session = OAuth1Session(consumer_key, client_secret=consumer_secret) fetch_response = oauth_session.fetch_request_token(request_token_url) resource_owner_key = fetch_response.get('oauth_token') resource_owner_secret = fetch_response.get('oauth_token_secret') # STEP 2: Authorize URL + Rresponse full_authorize_url = oauth_session.authorization_url(authorize_url) # Redirect to authentication page print('\nPlease go here and authorize:\n{}'.format(full_authorize_url)) redirect_response = input('Allow then paste the full redirect URL here:\n') # Retrieve oauth verifier oauth_response = oauth_session.parse_authorization_response(redirect_response) verifier = oauth_response.get('oauth_verifier')
# tw_search.py import json, sys import config from datetime import datetime as dt import pytz from requests_oauthlib import OAuth1Session from numpy import random as nrnd API_KEY = config.API_KEY API_SECRET = config.API_SECRET ACCESS_TOKEN = config.ACCESS_TOKEN ACCESS_TOKEN_SECRET = config.ACCESS_TOKEN_SECRET twitter = OAuth1Session(API_KEY, API_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET) def parse_date(date_original): date_formatted = dt.strptime(date_original, "%a %b %d %H:%M:%S %z %Y") return date_formatted def search_tweets(keyword): url = "https://api.twitter.com/1.1/search/tweets.json" req = twitter.get(url, params={'q': keyword}) if req.status_code == 200: timeline = json.loads(req.text) return timeline else: print("ERROR: %d" % req.status_code)
def __init__(self): self.session = OAuth1Session(CK, CS, AT, AS)
import os from requests_oauthlib import OAuth1Session #環境変数から認証情報を取得する CONSUMER_KEY = os.environ['CONSUMER_KEY'] CONSUMER_SECRET = os.environ['CONSUMER_SECRET'] ACCESS_TOKEN = os.environ['ACCESS_TOKEN'] ACCESS_TOKEN_SECRET = os.environ['ACCESS_TOKEN_SECRET'] #認証情報をつかってOAuth1Sessionオブジェクトを得る twitter = OAuth1Session(CONSUMER_KEY, client_secret=CONSUMER_SECRET, resource_owner_key=ACCESS_TOKEN, resource_owner_secret=ACCESS_TOKEN_SECRET) #ユーザーのタイムラインを取得 response = twitter.get( 'https://api.twitter.com/1.1/statuses/home_timeline.json') for status in response.json(): print('@' + status['user']['screen_name'], status['text'])
#encoding: UTF-8 from requests_oauthlib import OAuth1Session import json import settings import urllib2, sys twitter = OAuth1Session(settings.CONSUMER_KEY, settings.CONSUMER_SECRET, settings.ACCESS_TOKEN, settings.ACCESS_TOKEN_SECRET) try: citycode = sys.argv[1] except: citycode = '130010' #デフォルト地域を東京にする resp = urllib2.urlopen( 'http://weather.livedoor.com/forecast/webservice/json/v1?city=%s' % citycode).read() resp = json.loads(resp) result = u"東京の天気" for forecast in resp['forecasts']: result = result + "\n" + forecast['dateLabel'] + '(' + forecast[ 'date'] + ')' + forecast['telop'] params = {"status": result} req = twitter.post("https://api.twitter.com/1.1/statuses/update.json", params=params) # レスポンスを確認 if req.status_code == 200: print("OK")
import time import json import os import pprint from dateutil.parser import parse from datetime import datetime from requests_oauthlib import OAuth1Session CONSUMER_KEY_TWEET_NEWS = os.environ['CONSUMER_KEY_TWEET_NEWS'] CONSUMER_SECRET_TWEET_NEWS = os.environ['CONSUMER_SECRET_TWEET_NEWS'] ACCESS_TOKEN_TWEET_NEWS = os.environ['ACCESS_TOKEN_TWEET_NEWS'] ACCESS_TOKEN_SECRET_TWEET_NEWS = os.environ['ACCESS_TOKEN_SECRET_TWEET_NEWS'] twitter = OAuth1Session(CONSUMER_KEY_TWEET_NEWS, CONSUMER_SECRET_TWEET_NEWS, ACCESS_TOKEN_TWEET_NEWS, ACCESS_TOKEN_SECRET_TWEET_NEWS) # メイン処理 def tweet_main(): # 1 タイムライン取得 req, timeline_list = get_timeline() result_list = [] # news_data, url, title, description を返却用に加工し格納 for timeline in timeline_list['statuses']: news_dict = {} # ツイート生成時刻の取得 + フォーマット成型 news_dict['news_date'] = parse( timeline['created_at']).strftime('%Y-%m-%d %H:%M:%S') # #nhk_newsでtitle + url を分割
def __init__(self): # Twitter APIへ認証し、接続する。 self.twitter = OAuth1Session(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET) print('Twitter connected.')
# twitter ツイート # --------------------------- # twi 認証----------------------------------- import twi_config from requests_oauthlib import OAuth1Session ck = twi_config.API_key cs = twi_config.API_secret_key at = twi_config.Access_token ats = twi_config.Access_token_secret twitter = OAuth1Session(ck, cs, at, ats) # ------------------------------------------- url = "https://api.twitter.com/1.1/statuses/update.json" print("つぶやく内容を入力してください") print("入力後はエンター") tweet = input(">> ") print("-----------------------------------") prm = {"status": tweet} req = twitter.post(url, params=prm) if req.status_code == 200: print("ツイートが送信されました") else: print("ERROR: %d" % req.status_code)
client_key = secrets.client_key client_secret = secrets.client_secret # STEP 1: GET A REQUEST TOKEN # We have to start by obtaining a 'request' token # We will supply our client key and client secret # ...otherwise no token -- you can't even get in the door! # # At this point we have provided our application's credentials # so that we have the privelege to do more stuff, like request # authorization for a particular user. request_token_url = 'https://api.twitter.com/oauth/request_token' oauth = OAuth1Session(client_key, client_secret=client_secret) fetch_response = oauth.fetch_request_token(request_token_url) resource_owner_key = fetch_response.get('oauth_token') resource_owner_secret = fetch_response.get('oauth_token_secret') # STEP 2: GET AUTHORIZATION FROM THE USER # Now we have "request privileges." What will we do with all that power? # We will send our user over to the service provider (Twitter, in this case) # to log in. After they do, Twitter will generate a special URL, # unique to this operation (THIS request for THIS user by THIS application). # Our application can then go to that URL to get the very special # verification token that we can use to retreive THIS user's data for use # in THIS application base_authorization_url = 'https://api.twitter.com/oauth/authorize'
from requests_oauthlib import OAuth1Session import json data_list = [] context = {} cnt = 0 env = Environment(loader=FileSystemLoader('./', encoding='utf8')) tmpl = env.get_template('template.html') API_Key = setting.API_Key API_Secret_Key = setting.API_Secret_Key Access_Token = setting.Access_Token Access_Token_Secret = setting.Access_Token_Secret twitter = OAuth1Session(API_Key, API_Secret_Key, Access_Token, Access_Token_Secret) search_api = 'https://api.twitter.com/1.1/search/tweets.json' oembed_api = 'https://publish.twitter.com/oembed' params = { # 波ダッシュ、全角チルダ 'q': '#はぁ〜また買っちゃった OR #はぁ~また買っちゃった -filter:retweets', 'result_type': 'recent', 'count': 10, } print('get res...') res = twitter.get(search_api, params=params) tweets = json.loads(res.text) print('embed...')
def __init__(self, modelNo): self.twitter = OAuth1Session(self.CK, self.CS, self.AT, self.ATS) # 認証処理 self.my_model_no = modelNo
import os import psycopg2 import time import urllib from requests_oauthlib import OAuth1Session from tweet import tweet from db import connect_db # Twitter OAuth twitter = OAuth1Session(os.environ['CONSUMER_KEY'], os.environ['CONSUMER_SECRET'], os.environ['ACCESS_TOKEN'], os.environ['ACCESS_TOKEN_SECRET']) conn = connect_db() cur = conn.cursor() table = [ '矢島', '齊藤', '小坂', '中島', '高橋', '鉄谷', '川澄', '増田', '猪俣', '岩井', '大野', '竜田', '山田', '池田', '森谷', '井ノ上' ] tw = '研究室配属 第一次募集の希望登録数は,以下の結果になりました.\n' for i in range(16): # prof研の人数をdbから取得 prof = table[i] cur.execute('SELECT curt FROM remain WHERE prof=%s;', (prof, )) curt = cur.fetchone()[0] cur.execute('SELECT cap FROM remain WHERE prof=%s;', (prof, ))
import json, config from requests_oauthlib import OAuth1Session """ Connect session """ # auth key CX = config.CONSUMER_KEY CS = config.CONSUMER_SECRET AT = config.ACCESS_TOKEN ATS = config.ACCESS_TOKEN_SECRET # connect twitter = OAuth1Session(CX, CS, AT, ATS) """ Get timeline from my account """ # endpoint for request timeline url = "https://api.twitter.com/1.1/statuses/user_timeline.json" # access to endpoint params = {'count': 5} res = twitter.get(url, params = params) if res.status_code == 200: # output timelines = json.loads(res.text) for line in timelines: print(line['user']['name']+'::'+line['text']) print(line['created_at']) print('*****************************************') else: print("Failed: %d" % res.status_code)
from requests_oauthlib import OAuth1Session import json from tkinter import * from PIL import ImageTk, Image #my_own_module import twitter_tools #IMPORTANT: To run the programme you have to add your client and owner keys. #You can easily get them from: www.https://developer.twitter.com/en twitter = OAuth1Session(client_key='YOUR KEY HERE', client_secret='YOUR KEY HERE', resource_owner_key='YOUR KEY HERE', resource_owner_secret='YOUR KEY HERE') root = Tk() root.title('PersonaFolowerz') root.iconbitmap('twitter_r_icon.ico') root.configure(background='red') persons = [] def twitterdata_for_label(name, id_, description, location, followers): persons.append((Label(root, fg="white", bg="red"), Label(root, fg="white", bg="black"))) persons[len(persons) - 1][0]["text"] = (name + ' twitter id: ' + id_ + '\n' + description + '\n' + location)
import json import config from requests_oauthlib import OAuth1Session CK = config.CONSUMER_API_KEY CS = config.CONSUMER_API_SELECT_KEY AT = config.ACCESS_TOKEN ATS = config.ACCESS_TOKEN_SECRET oauth = OAuth1Session(CK, CS, AT, ATS) endpoint = "https://api.twitter.com/1.1/statuses/user_timeline.json" params = {"screen_name": "****", "exclude_replies": True, "count": 200} json_list = [] for i in range(16): response = oauth.get(endpoint, params=params) if response.status_code == 200: tweets = json.loads(response.text) params["max_id"] = tweets[-1]['id'] json_list += [line for line in tweets] else: print("Failed :%d" % response.status_code) with open("test.json", "a") as f: json.dump(json_list, f)
from requests_oauthlib import OAuth1Session import os import json # Authentication from config import * request_token_url = "https://api.twitter.com/oauth/request_token" oauth = OAuth1Session(consumer_key, client_secret=consumer_secret) fetch_response = oauth.fetch_request_token(request_token_url) resource_owner_key = fetch_response.get("oauth_token") resource_owner_secret = fetch_response.get("oauth_token_secret") print("Got OAuth token: {}".format(resource_owner_key)) # Get authorization base_authorization_url = "https://api.twitter.com/oauth/authorize" authorization_url = oauth.authorization_url(base_authorization_url) print("Please go here and authorize: {}".format(authorization_url)) verifier = input("Paste the PIN here: ") # Get the access token access_token_url = "https://api.twitter.com/oauth/access_token" oauth = OAuth1Session( consumer_key, client_secret=consumer_secret, resource_owner_key=resource_owner_key, resource_owner_secret=resource_owner_secret, verifier=verifier, )
def get_oauth_session(): # Init base_url_prod = r"https://api.etrade.com" base_url_dev = r"https://apisb.etrade.com" req_token_url = r"https://api.etrade.com/oauth/request_token" auth_token_url = r"https://us.etrade.com/e/t/etws/authorize" access_token_url = r"https://api.etrade.com/oauth/access_token" client_key = config["DEFAULT"]["CONSUMER_KEY"] renew_access_token_url = r"https://api.etrade.com/oauth/renew_access_token" # Check if file is older than today, token expires at midnight US Eastern, remove file if it's old so that we can re-auth session if (os.path.exists('access_token.json')): fname = pathlib.Path('access_token.json') tz = timezone('US/Eastern') create_time = datetime.fromtimestamp(fname.stat().st_ctime, tz) today_time = datetime.now(tz) if not (today_time.date() == create_time.date()): os.remove("access_token.json") # Check if access_token is saved and still valid if (os.path.exists('access_token.json')): try: #load access_token with open('access_token.json') as json_file: access_token = json.load(json_file) session = OAuth1Session( client_key=config["DEFAULT"]["CONSUMER_KEY"], client_secret=config["DEFAULT"]["CONSUMER_SECRET"], resource_owner_key=access_token['oauth_token'], resource_owner_secret=access_token['oauth_token_secret'], signature_type="AUTH_HEADER", ) #test to make sure session works by renewing token session.get(renew_access_token_url) except: print( "Unable to get authenticated session, removing access_token.json" ) print("Please try running command again.") #os.remove("access_token.json") sys.exit(1) else: try: # Set up session session = OAuth1Session( client_key=config["DEFAULT"]["CONSUMER_KEY"], client_secret=config["DEFAULT"]["CONSUMER_SECRET"], callback_uri="oob", signature_type="AUTH_HEADER", ) session.fetch_request_token(req_token_url) authorization_url = session.authorization_url(auth_token_url) akey = session.parse_authorization_response(authorization_url) resource_owner_key = akey["oauth_token"] formated_auth_url = "%s?key=%s&token=%s" % ( auth_token_url, client_key, resource_owner_key, ) #Open webbrowser to get text code from E*Trade webbrowser.open(formated_auth_url) text_code = input( "Please accept agreement and enter text code from browser: ") session._client.client.verifier = text_code #Get access_token access_token = session.fetch_access_token(access_token_url) #Save access_token to cache with open('access_token.json', 'w') as json_file: json.dump(access_token, json_file) os.chmod("access_token.json", 0o600) except: print( "Unable to get authenticated session, check config.ini for correct consumer_key and consumer_secret" ) sys.exit(1) return session
# -*- coding:utf-8 -*- import json from requests_oauthlib import OAuth1Session from twitter import Twitter, OAuth from janome.tokenizer import Tokenizer import collections import re from collections import Counter, defaultdict #APIキーの設置 CONSUMER_KEY = 'YOURS' CONSUMER_SECRET = 'YOURS' ACCESS_TOKEN = 'YOURS' ACCESS_SECRET = 'YOURS' twitter = OAuth1Session(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_SECRET) url = "https://api.twitter.com/1.1/search/tweets.json" def get_userstweets(user_id, tweet_id): t = Twitter( auth=OAuth(ACCESS_TOKEN, ACCESS_SECRET, CONSUMER_KEY, CONSUMER_SECRET)) remain = True #ループ判定 max_id = tweet_id remainNum = 0 numberOfTweets = 10 #取ってくるtweetの数 count = 5 #一度のアクセスで何件取ってくるか while remain: aTimeLine = t.statuses.user_timeline(user_id=user_id, count=count,
def create_oath_session(oath_key_dict): oath = OAuth1Session(oath_key_dict["consumer_key"], oath_key_dict["consumer_secret"], oath_key_dict["access_token"], oath_key_dict["access_token_secret"]) return oath
def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) config = SocialConfig.get_solo() # Twitter if config.twitter_client_id and config.twitter_client_secret and config.twitter_access_token_secret: from requests_oauthlib import OAuth1Session redirect_uri = self.request.build_absolute_uri( resolve_url('admin_social_networks:twitter_token')) oauth_client = OAuth1Session( client_key=config.twitter_client_id, client_secret=config.twitter_client_secret, callback_uri=redirect_uri, ) try: oauth_client.fetch_request_token( 'https://api.twitter.com/oauth/request_token') except ValueError: raise Http404 token_url = oauth_client.authorization_url( 'https://api.twitter.com/oauth/authorize') self.fields['twitter_token'].initial = token_url self.fields['twitter_token'].help_text = _( 'Add redirect URI "%s" to your Twitter application' ) % redirect_uri # Facebook if config.facebook_client_id and config.facebook_client_secret: redirect_uri = self.request.build_absolute_uri( resolve_url('admin_social_networks:facebook_token')) token_url = ('https://www.facebook.com/dialog/oauth' '?client_id={client_id}&redirect_uri={redirect_uri}' '&scope={scope}&state=&response_type=code').format( client_id=config.facebook_client_id, redirect_uri=redirect_uri, scope='manage_pages,publish_pages', ) self.fields['facebook_token'].initial = token_url self.fields['facebook_token'].help_text = _( 'Add redirect URI "%s" to your Facebook application' ) % redirect_uri # Instagram if config.instagram_client_id and config.instagram_client_secret: redirect_uri = self.request.build_absolute_uri( resolve_url('admin_social_networks:instagram_token')) token_url = ('https://api.instagram.com/oauth/authorize/' '?client_id={client_id}&redirect_uri={redirect_uri}' '&response_type=code').format( client_id=config.instagram_client_id, redirect_uri=redirect_uri, ) self.fields['instagram_token'].initial = token_url self.fields['instagram_token'].help_text = _( 'Add redirect URI "%s" to your Instagram application' ) % redirect_uri # LinkedIn if config.linkedin_client_id and config.linkedin_client_secret: redirect_uri = self.request.build_absolute_uri( resolve_url('admin_social_networks:linkedin_token')) token_url = ( 'https://www.linkedin.com/oauth/v2/authorization' '?client_id={client_id}&redirect_uri={redirect_uri}' '&response_type=code&state={state}&scope={scope}').format( client_id=config.linkedin_client_id, redirect_uri=redirect_uri, state=uuid.uuid1(), scope='r_basicprofile%20w_share', ) self.fields['linkedin_token'].initial = token_url self.fields['linkedin_token'].help_text = _( 'Add redirect URI "%s" to your LinkedIn application' ) % redirect_uri