[Flutter]Twitter APIを使って認証する際にCallback URLでハマった話

スポンサーリンク

FlutterでTwitter APIを使っていろいろしてみようと思い、
まずは、ログイン認証機能を試しました。

Twitter APIの使用するための登録方法もなかなか手間でしたが、ここでは省略します。

環境情報

Flutter 1.12.13+hotfix.8
パッケージ:flutter_twitter 1.1.3
https://pub.dev/packages/flutter_twitter

ハマったところ

Twitter APIのAPP設定において、Callback URLが何者か知らず、後回しにして適当に設定していましたが、そのせいで、エラーが発生していました。

Callback URL not approved for this client application. Approved callback URLs can be adjusted in your application settings

設定内容

上位のパッケージpub.devにも記載されていました。

You will have to use the following callback URLs:

Android – twittersdk: //
iOS – twitterkit-CONSUMERKEY: //

Androidの場合、twittersdk:// と入力します。
1度、間違えて、Android-twittersdk:// と入力していました。。。

スペースが入っているので注意。

エラーメッセージ

E/Twitter (30342): Invalid json: <?xml version='1.0' encoding='UTF-8'?><errors><error code="415">Callback URL not approved for this client application. Approved callback URLs can be adjusted in your application settings</error></errors>
E/Twitter (30342): com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $
E/Twitter (30342):  at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:224)
E/Twitter (30342):  at com.twitter.sdk.android.core.models.SafeListAdapter$1.read(SafeListAdapter.java:45)
E/Twitter (30342):  at com.twitter.sdk.android.core.models.SafeMapAdapter$1.read(SafeMapAdapter.java:45)
E/Twitter (30342):  at com.google.gson.Gson.fromJson(Gson.java:887)
E/Twitter (30342):  at com.google.gson.Gson.fromJson(Gson.java:852)
E/Twitter (30342):  at com.google.gson.Gson.fromJson(Gson.java:801)
E/Twitter (30342):  at com.google.gson.Gson.fromJson(Gson.java:773)
E/Twitter (30342):  at com.twitter.sdk.android.core.TwitterApiException.parseApiError(TwitterApiException.java:110)
E/Twitter (30342):  at com.twitter.sdk.android.core.TwitterApiException.readApiError(TwitterApiException.java
E/Twitter (30342): Failed to get request token
E/Twitter (30342): com.twitter.sdk.android.core.TwitterApiException: HTTP request failed, Status: 403
E/Twitter (30342):  at com.twitter.sdk.android.core.Callback.onResponse(Callback.java:42)
E/Twitter (30342):  at retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall$1$1.run(ExecutorCallAdapterFactory.java:68)
E/Twitter (30342):  at android.os.Handler.handleCallback(Handler.java:907)
E/Twitter (30342):  at android.os.Handler.dispatchMessage(Handler.java:99)
E/Twitter (30342):  at android.os.Looper.loop(Looper.java:216)
E/Twitter (30342):  at android.app.ActivityThread.main(ActivityThread.java:7506)
E/Twitter (30342):  at java.lang.reflect.Method.invoke(Native Method)
E/Twitter (30342):  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
E/Twitter (30342):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:956)
V/FA      (30342): Not logging ad unit exposure. Less than 1000 ms. exposure: 353
V/FA      (30342): Not logging ad exposure. Less than 1000 ms. exposure: 353
V/FA      (30342): Screen exposed for less than 1000 ms. Event not sent. time: 352
V/FA      (30342): Activity paused, time: 33998035
E/Twitter (30342): Authorization completed with an error

Callback URLが未設定時のエラーについて

https://sinproject.net/twitter-apitwitterkitandroid-%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3%E6%99%82%E3%81%AB%E3%80%8Ctwitterauthexception-failed-to-get-request-token%E3%80%8D%E3%81%8C%E7%99%BA%E7%94%9F%E3%81%97/

2018年6月12日から、Twitterアプリ管理画面の「Callback URLs」(ホワイトリスト)と、アプリ側の request_token 要求時に指定するコールバックURLを一致させないといけなくなった

らしいです。
今回は久しぶりに触ったので、変わったことも知りませんでした。

コメント

タイトルとURLをコピーしました