twitterのoauth認証について質問です。
今python(flask)を用いたwebページを作成しています。
そのページのホームには、Twitterのある特定のハッシュタグで検索をした場合のタイムラインが表示されており、さらに[このページをシェア]をクリックすると、現在開いているページのURLがツイートされてTwitterで共有できるという機能を実装しようとしています。
まずTwitterのタイムラインを表示するために、tweepyというライブラリを使い、タイムラインを取得しています。そのために、開発用アカウントとしてアクセストークンを取得(developer toolから)してapiオブジェクトを作成し、表示できました。
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET, callback_url) auth.set_access_token(ACCESS_TOKEN_KEY, ACCESS_TOKEN_SECRET)
しかし、ページをシェアする場合は開発者用のアカウントではなく、閲覧者のアカウントです。もしも最初のタイムラインを表示する際に使用したapiオブジェクトだと、開発者用アカウントが紐づいたものなので、共有ツイートも開発者用アカウントから行われてしまいます。
従って、apiオブジェクトのアクセストークンを変更すれば良いと考えました。twitterの認証→コールバックURLの処理で閲覧者のアカウントからアクセストークンを取得→新しいapiオブジェクトをセットという形にしました。以下、認証ページで認証した後に遷移されるURL(/auth)の処理です。
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET, callback_url) oauth_token = request.args.get('oauth_token',default=' ',type=str) oauth_verifier = request.args.get('oauth_verifier',default=' ',type=str) auth.request_token['oauth_token'] = oauth_token auth.request_token['oauth_token_secret'] = oauth_verifier auth.get_access_token(oauth_verifier) auth.set_access_token(auth.access_token,auth.access_token_secret) api = tweepy.API(auth)
つまり最初の訪問時は開発者用のアカウントで、共有ツイートをツイートした後(つまりapiオブジェクトに閲覧者のアクセストークンが設定された後)はホーム画面に表示されるツイートの取得は閲覧者のアクセストークンによって行われることを想定していたのですが、エラーが出てしまいました(tweepy.errors.Unauthorized: 401 Unauthorized)。
エラー文から、認証に関するものだと推測はできますが、このようなやり方は無理なのでしょうか?
あなたの回答
tips
プレビュー