仕事と家事で毎日バタバタ…

ずぼら主婦さゆです。

 

単身赴任中の夫、わたし、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や気分転換に!/

2種から選べる 煎 レギュラーコーヒー プレミアムドリップコーヒー(10g*20袋)【煎(せん)】[ドリップコーヒー]

右矢印プレミアムドリップコーヒー(10g*20袋)

 

 

\夜間の作業が多い方に!/

【2年保証】Lepro ledデスクライト ACアダプター付き 目に優しい JIS規格 AA形相当 卓上ライト電気スタンド学習用 テーブルライト 学習机 ライト 勉強机 コンセント式 ledライト 卓上スタンド おしゃれテレワーク読書灯学生 学習ライト

右矢印目に優しい LEDデスクライト

 

 

\長時間のPC作業で目が疲れる方に!/

【眼科で採用◎圧倒的レビュー数3,000件!!】 JIS検査済 ブルーライトカットメガネ メガネ ブルーライトカット 紫外線カット 度なし 伊達メガネ PCメガネ 軽量 パソコン おしゃれ メンズ レディース クリアレンズ mujina0008

右矢印ブルーライトカット眼鏡

 

長時間のパソコン作業には必須アイテム👓 

わたしのように画面を見続ける作業をする時に

目の疲れを軽減してくれます✨ 

デザインもおしゃれで

普段使いもできるのが嬉しいポイント🎶

 

 

 

\ChatGPT活用本/

 

わたしがChatGPTとの付き合い方を

学んだ入門書です📚
初心者でも分かりやすく

実践的な使い方が満載!

 

💡 こんなあなたにおすすめ 

・ChatGPTを初めて使う方

・効果的な質問の仕方を知りたい方 

・日常生活で活用したい方

 

 

\Logicool ワイヤレスマウス M575S トラックボール/

 

長時間のPC作業で手首が疲れるあなたに!
ChatGPTとのやり取りで
作業時間が増えたわたしには必需品です✨

 

💡 こんなあなたにおすすめ
・長時間のPC作業をする方
・手首の疲れを軽減したい方
・作業効率を上げたい方

 

 

山善 昇降式デスク
\スタンディングデスク 幅120cm/

 

立ったり座ったり、集中力を保ちながら学習!
新しいことを覚える時の気分転換に最適🏠

 

💡 こんなあなたにおすすめ
・集中力を持続させたい方
・健康的に作業したい方
・学習環境を整えたい方

 

 

 

楽天ROOMでは

「買ってよかったものだけを載せています。

 

 

 

 

最後まで読んでくださって

ありがとうございます✨

 

 


フォローや「いいね」もらえると

すっごく励みになります♪

フォローしてね



それではまたバイバイ

 

 

 

にほんブログ村 主婦日記ブログ パート主婦へ
にほんブログ村

 

人気ブログランキング
人気ブログランキング