仕事と家事で毎日バタバタ…
ずぼら主婦さゆです。
単身赴任中の夫、わたし、3歳娘の
3人家族
このブログでは
なるべくラクに家計をやりくりする方法
節約しつつプチ贅沢を楽しむコツ
夢のマイホーム実現に向けた情報
を発信していきます!
いいねやコメントもらえると
嬉しいです
ご訪問ありがとうございます。
こんにちは!さゆです。
前回、ChatGPTとの会話の中で
ついにUnicodeEncodeErrorの本当の原因が判明!
なんと!わたしの.envファイルには
ACCESS_TOKENが2回書かれていて
2つ目に全角の括弧が入っていたのです😱
徹底的な大掃除で問題解決🧹
ChatGPTの指示に従って
.envファイルを修正しました😊
✅ 重複している行を削除
✅ 全角文字を完全に除去
API_KEY=gTFWDOnan...
API_SECRET=ygf5V8qDCLwn8plWe...
ACCESS_TOKEN=1930574954040537088-mRTYRn...
ACCESS_TOKEN_SECRET=1FcRYH388hrCKYDX2HnfD8QZ...
BEARER_TOKEN=AAAAAAAAAAAAAAAAAAAAAHIV3AEAAAAAB3...
CLIENT_ID=U0RsSVZubkF...
# CLIENT_SECRET=75QutWqnj_nSbYfx...
これでエラーが解消するはず!
と期待したものの…
🚫 新たな壁:OAuth認証エラー
.envファイルを修正して再実行すると
今度は別のエラーが😅
❌ 投稿失敗… 403
{ "title": "Unsupported Authentication", "detail": "Authenticating with OAuth 2.0 Application-Only is forbidden for this endpoint. Supported authentication types are [OAuth 1.0a User Context, OAuth 2.0 User Context].", "type": "https://api.twitter.com/2/problems/unsupported-authentication", "status": 403}
さゆ:
「今度は何?」
ChatGPT:
「よし!💮ここまでの修正は完璧です。全角エラーは解消しました。 」
わあ、UnicodeEncodeError解消万歳‼️
ChatGPT:
「🧨次の問題:「Unsupported Authentication」403エラーの原因
今のコードは『OAuth 2.0 App Only』(アプリ単体の認証)になっていて、ユーザー本人の投稿には使えない認証方式です。」
OAuth(オーオース)という認証方式にも種類があるのね💡
OAuth 1.0aへの大改造作業🔧
ChatGPT:
「✅ 解決策:OAuth 1.0a を使う
さゆさんの持っているこの2つのトークンが使えます:
ACCESS_TOKEN=1930574954040537088-mRTYRn...
ACCESS_TOKEN_SECRET=1FcRYH388hrCKYDX2HnfD8QZ...
これらは OAuth 1.0a(User Context) 用のもので、
Pythonでサイン付きリクエストを送る必要があります。
⸻
🔧 修正コード:requests-oauthlibで投稿する方法
✅ 必要なライブラリをインストール(1回だけ)
pip install requests requests-oauthlib
⸻
✅ 投稿コード(post_tweet.py)
import os
from dotenv import load_dotenv
import requests
from requests_oauthlib import OAuth1
load_dotenv()
# 環境変数から認証情報を読み込む
API_KEY = os.getenv("API_KEY")
API_SECRET = os.getenv("API_SECRET")
ACCESS_TOKEN = os.getenv("ACCESS_TOKEN")
ACCESS_TOKEN_SECRET = os.getenv("ACCESS_TOKEN_SECRET")
# OAuth 1.0a の認証セットアップ
auth = OAuth1(API_KEY, API_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
# 日本語含むツイート内容を.txtから読み込む
with open("tweet.txt", "r", encoding="utf-8") as f:
tweet_text = f.read()
data = {
"text": tweet_text
}
# ツイートを送信
response = requests.post("https://api.twitter.com/2/tweets", json=data, auth=auth)
if response.status_code == 201:
print("✅ 投稿成功!")
print(response.json())
else:
print("❌ 投稿失敗…")
print(response.status_code)
print(response.text)
⸻
これで 日本語も改行も含めて投稿成功するはずです!
試してみて、結果を教えてください😊」
まだ続くエラーとの戦い
❌ 投稿失敗…403
{"title": "Unsupported Authentication","detail": "Authenticating with OAuth 2.0 Application-Only is forbidden for this endpoint. Supported authentication types are [OAuth 1.0a User Context, OAuth 2.0 User Context].","type": "https://api.twitter.com/2/problems/unsupported-authentication","status": 403}
FileNotFoundError: [Errno 2] No such file or directory: 'tweet.txt'
ChatGPT:
「よし!投稿コードの構造は完璧です👏
あとは 2つのことをクリアすれば、いよいよ成功します:
⸻
✅ ① エラー①:Unsupported Authentication の再発
"Authenticating with OAuth 2.0 Application-Only is forbidden for this endpoint."
これは、OAuth 1.0a 認証がまだ使われていない状態を示しています。
おそらく .env の読み込みや auth=OAuth1(...) が反映されていない可能性があります。
⸻
🔍確認ポイント:
✅ .env に必要な項目があるか?
✅ Pythonコード内でちゃんとOAuth1認証が使われているか?
💡 headers = { Authorization: ... } は不要です。
OAuth1はauth=OAuth1(...)だけでOKです!
⸻
✅ ② エラー②:tweet.txtが見つからない
FileNotFoundError: No such file or directory: 'tweet.txt'
これは単純に、tweet.txt ファイルが post_tweet.py と同じフォルダにないだけです。
⸻
🔧 解決方法:
1. C:\Users\sayu\Documents\XAutoPost フォルダに
2. メモ帳などで tweet.txt を作成し、UTF-8で保存
3. 内容にツイート本文を入れて保存
⸻
準備できたらまた実行してみてください!
うまくいったら次は スプレッドシート連携 or 予約投稿 に進もうね✨」
今回のまとめ📝
ついに長らく悩まされていた
UnicodeEncodeErrorが解消して
本当にうれしかったです✨
✅ 問題の原因
.envファイルでACCESS_TOKENが重複、2つ目に全角文字が含まれていた💦
✅ 解決方法
重複行を削除し、全角文字をすべて除去😊
✅ 新しい課題
OAuth認証方式を変更する必要がある✨
✅ 対策
requests-oauthlibライブラリを使ってOAuth 1.0a認証に変更💪
次回予告🚀
次回は、いよいよOAuth 1.0a認証を使った投稿に挑戦です。
日本語の投稿を世に送り出せるでしょうか?🤔
お楽しみに!😊
ChatGPTへの相談内容📝
🛍️長時間作業のお供
今回も長時間パソコンと向き合っていて
目の疲れがひどかったです💦
特にエラーメッセージを何度も見ていると
集中力が途切れがちに😅
そんな時は、温かいお茶を飲んで一息つくのが一番ですね☕
\集中力UPや気分転換に!/
\夜間の作業が多い方に!/
\長時間のPC作業で目が疲れる方に!/
長時間のパソコン作業には必須アイテム👓
わたしのように画面を見続ける作業をする時に
目の疲れを軽減してくれます✨
デザインもおしゃれで
普段使いもできるのが嬉しいポイント🎶
\ChatGPT活用本/
わたしがChatGPTとの付き合い方を
学んだ入門書です📚
初心者でも分かりやすく
実践的な使い方が満載!
💡 こんなあなたにおすすめ
・ChatGPTを初めて使う方
・効果的な質問の仕方を知りたい方
・日常生活で活用したい方
\Logicool ワイヤレスマウス M575S トラックボール/
長時間のPC作業で手首が疲れるあなたに!
ChatGPTとのやり取りで
作業時間が増えたわたしには必需品です✨
💡 こんなあなたにおすすめ
・長時間のPC作業をする方
・手首の疲れを軽減したい方
・作業効率を上げたい方
山善 昇降式デスク
\スタンディングデスク 幅120cm/
立ったり座ったり、集中力を保ちながら学習!
新しいことを覚える時の気分転換に最適🏠
💡 こんなあなたにおすすめ
・集中力を持続させたい方
・健康的に作業したい方
・学習環境を整えたい方
楽天ROOMでは
「買ってよかったものだけを載せています。
最後まで読んでくださって
ありがとうございます✨
フォローや「いいね」もらえると
すっごく励みになります♪
それではまた