シュッと GPTs の API に OAuth 認証をつけようと試みた話

ちゃっす(/・ω・)/



GPTs のアクションとして API を定義することができるでござんす



何かというと、「例えば今日の東京のお天気いかが?」と聞いた場合にお天気情報を答えてくれる API を事前に定義しておくことで LLM (ChatGPT) が考えるのではなく東京のお天気を API 経由で取得できるっちゅーことですな(/・ω・)/



で、こういった API を使う場合に OAuth 認証がつけられるみたいなので特定の認証を受けたユーザーのみ使えるようにできるかしら?


ということを調べたみた


という話。




先に結論を書いておくとうまくいきまへんでした(/・ω・)/




ので、失敗談?である




GPTs を作る画面の一番下に Add actions がありますわね(/・ω・)/

GPTs 作る画面

ポチってみると Authentication というところがありんす

Authentication


んで、OAuth を選択すると設定ができるぞ☆

せっていがめん


まぁとりあえず Google の OAuth でもつけるかっちゅーことで



Google Cloud で認証キーを発行~


でキーを発行しまぁ~す
(やり方はググったり ChatGPT に聞くと教えてくれるよ


んで、発行された Client ID と Client Secre を設定しまぁ~す


そして、Google の場合


Authorization URL: https://accounts.google.com/o/oauth2/auth

Token URL: https://oauth2.googleapis.com/token


なのでこれを設定しまぁ~す



んで、GPTs のアクションの他の項目を適当に埋めまぁ~す

あくしょん設定




まぁこれでいけるでしょう(/・ω・)/



と思ったが



えら~~~~




ドメインがそろってないからダメ~~~




って怒られる( ・ω・)



積んだ。



と思ったのでございますが一筋の光が OpenAI の Dev Forum に、、、



無理やりURL 短縮サービス使ってドメイン揃えりゃいいやんというアイディア、、、孔明現る(/・ω・)/



ので、全部 URL を短縮して実行!!



失敗!!




認証画面に飛ばそうとはしてくれる




一応認証画面に飛ばそうと試みてくれるの駄菓子菓子エラーになるでござんす( ・ω・)



ブラウザ DevTools でネットワークログを確認したところ、URL を短縮したことでほんとにアクセスしたいところにリダイレクトがかかるのでございます(/・ω・)/


今回認証で使いたい URL は https://accounts.google.com/o/oauth2/auth でございまして、こちらの利用にあたっては必要なパラメータを URL に追加する必要があるのだ(/・ω・)/


で、そのパラーメータがリダイレクトするときに消滅していたのだ(/・ω・)/



っちゅーことで



短縮 URL を作成する時点で無理やりフルフルのパラメータをつけるようにしてみた


こういう感じ

https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=hoge.apps.googleusercontent.com&redirect_uri=https%3A%2F%2Fchat.openai.com%2Faip%hoge%2Foauth%2Fcallback&scope=openid&state=hoge



とするとちゃんと Google 認証の画面が表示されて自分のアカウントを選択できるようになったぞ☆



駄菓子菓子



次のエラーに遭遇するのであった


えらー



流れとしては

  • ブラウザ認証ボタンぽち~

  • Google 認証画面が出てくる

  • 認証ぽち~

  • ChatGPT の画面にリダイレクト

  • ChatGPT がサーバー(OpenAI) にリクエスト

  • https://oauth2.googleapis.com/token  に確認リクエストを OpenAI が実施



となっている(はず)でありんすが



エラーメッセージを見る限り https://oauth2.googleapis.com/token のレスポンスがエラーを返していそう(詳細はサーバー側で行われているのでわからぬ)( ・ω・)



ただまぁ、おそらく https://oauth2.googleapis.com/token にアクセスする際にもシークレットキーとかパラメーターを渡す必要があるのだけれど、前述のように短縮 URL を使用していてリダイレクトがかかるので必要な情報が不足した状態で Token を発行しにいってる気がする(/・ω・)/



で、ここにきて本当の積みである(/・ω・)/



もろもろの処理を自前の API に実装してドメインを共通にすればまぁいけるのかもしれませんが非常に面倒なので検証はここまで。




おしまい。

この記事が気に入ったらサポートをしてみませんか?