twitter-kit-android icon indicating copy to clipboard operation
twitter-kit-android copied to clipboard

Log in using Twitter

Open HalyangDream opened this issue 6 years ago • 16 comments

If you log in with Twitter, "Callback URL not approved for this client application.approved Callback URLs can be adjusted in your application Settings " even if the phone does not have a Twitter client installed, but I did Apps.twitter.com has filled in the Url of the Callback, and the format is correct. What should be done?

HalyangDream avatar Jun 14 '18 09:06 HalyangDream

I had to dig into https://github.com/twitter/twitter-kit-android/blob/d71efe38404b5233e312f2531efbf72e5ce5d7bc/twitter-core/src/main/java/com/twitter/sdk/android/core/internal/oauth/OAuth1aService.java to find where the callback was being set. Try setting "twittersdk://" as your callback URL in your developer settings.

Andrew67 avatar Jun 14 '18 18:06 Andrew67

Life saver @Andrew67 I am just wondering isnt it a poor implementation from twitter's side. If they want to whitelist callbacks. They should be adding their SDK's generated callback url's from their end. Instead of depending on everyone adding it. Many thanks!

jayshildave avatar Jun 14 '18 22:06 jayshildave

@Andrew67 I want to put the "callback url" somewhere in the app. There is no specific description on the document. I hope you can tell me how to do it

HalyangDream avatar Jun 15 '18 02:06 HalyangDream

@HalyangDream, I thought I wanted to put a callback URL somewhere in the app as well. You don't have to. Just place that URL I mentioned above in the list of callback URLs on the apps.twitter.com settings for your app. @jayshildave I agree 100%, every piece of documentation I could find for this SDK assured me I wouldn't have to worry about the callback URL.

Andrew67 avatar Jun 15 '18 03:06 Andrew67

@Andrew67 Thank you for your reply and help. I have already solved this problem. Thank you very much for your help

HalyangDream avatar Jun 15 '18 03:06 HalyangDream

@Andrew67 thank you , this works for me

yangkai3 avatar Jun 15 '18 03:06 yangkai3

@Andrew67 thank you

jin123d avatar Jun 15 '18 07:06 jin123d

@Andrew67 thank you

lizebinbin avatar Jun 15 '18 09:06 lizebinbin

@HalyangDream @Andrew67 To close this issue, you also need to specify this callback url

twitterkit-YOUR_CONSUMER_KEY://

to make TwitterKit for iOS work.

See: #134 Problem with login with twitter web

XAVlER-S avatar Jun 15 '18 17:06 XAVlER-S

@Andrew67..i am facing same issue.

rahul-rahul1 avatar Jun 21 '18 10:06 rahul-rahul1

I sniffed auth request and saw callback url in headers. It started with twittersdk://callback and had parameters such as twitter sdk version and consumer key. I tried to add it to the whitelist and got rejection duy to incorrect format. I reread @Andrew67 answer and figured out my mistake. I think this should be pointed explicitly: Add EXACTLY string twittersdk:// and NOTHING MORE to make your app work again.

dhabensky avatar Jun 27 '18 11:06 dhabensky

twittersdk:// by using this ,it is working fine.

rahul-rahul1 avatar Jun 28 '18 04:06 rahul-rahul1

@Andrew67 i am bumping by head for the whitelisted URLs from past 3 days and because of you only it get solved...thank you sooooo much..

idrisbohra avatar Jun 30 '18 08:06 idrisbohra

@XavierSAndroid thank-you very much this saved my day :)

pankaj8958 avatar Jul 03 '18 09:07 pankaj8958

@Andrew67 Thanks, it works as expected

linh232323 avatar Jul 30 '18 16:07 linh232323

I am getting this Error In Failure Method While Login In android: com.twitter.sdk.android.core.TwitterAuthException: Failed to get request token

Error in Log.Console

E/Twitter: 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>
           com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $
               at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:224)
               at com.twitter.sdk.android.core.models.SafeListAdapter$1.read(SafeListAdapter.java:45)
               at com.twitter.sdk.android.core.models.SafeMapAdapter$1.read(SafeMapAdapter.java:45)
               at com.google.gson.Gson.fromJson(Gson.java:887)
               at com.google.gson.Gson.fromJson(Gson.java:852)
               at com.google.gson.Gson.fromJson(Gson.java:801)
               at com.google.gson.Gson.fromJson(Gson.java:773)
               at com.twitter.sdk.android.core.TwitterApiException.parseApiError(TwitterApiException.java:110)
               at com.twitter.sdk.android.core.TwitterApiException.readApiError(TwitterApiException.java:95)
               at com.twitter.sdk.android.core.TwitterApiException.<init>(TwitterApiException.java:43)
               at com.twitter.sdk.android.core.Callback.onResponse(Callback.java:42)
               at retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall$1$1.run(ExecutorCallAdapterFactory.java:68)
               at android.os.Handler.handleCallback(Handler.java:739)
               at android.os.Handler.dispatchMessage(Handler.java:95)
               at android.os.Looper.loop(Looper.java:145)
               at android.app.ActivityThread.main(ActivityThread.java:6946)
               at java.lang.reflect.Method.invoke(Native Method)
               at java.lang.reflect.Method.invoke(Method.java:372)
               at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404)
               at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199)
            Caused by: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $
               at com.google.gson.stream.JsonReader.beginObject(JsonReader.java:385)
               at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:213)
               at com.twitter.sdk.android.core.models.SafeListAdapter$1.read(SafeListAdapter.java:45) 
               at com.twitter.sdk.android.core.models.SafeMapAdapter$1.read(SafeMapAdapter.java:45) 
               at com.google.gson.Gson.fromJson(Gson.java:887) 
               at com.google.gson.Gson.fromJson(Gson.java:852) 
               at com.google.gson.Gson.fromJson(Gson.java:801) 
               at com.google.gson.Gson.fromJson(Gson.java:773) 
               at com.twitter.sdk.android.core.TwitterApiException.parseApiError(TwitterApiException.java:110) 
               at com.twitter.sdk.android.core.TwitterApiException.readApiError(TwitterApiException.java:95) 
               at com.twitter.sdk.android.core.TwitterApiException.<init>(TwitterApiException.java:43) 
               at com.twitter.sdk.android.core.Callback.onResponse(Callback.java:42) 
               at retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall$1$1.run(ExecutorCallAdapterFactory.java:68) 
               at android.os.Handler.handleCallback(Handler.java:739) 
               at android.os.Handler.dispatchMessage(Handler.java:95) 
               at android.os.Looper.loop(Looper.java:145) 
               at android.app.ActivityThread.main(ActivityThread.java:6946) 
               at java.lang.reflect.Method.invoke(Native Method) 
               at java.lang.reflect.Method.invoke(Method.java:372) 
               at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404) 
               at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199) 
           Failed to get request token
           com.twitter.sdk.android.core.TwitterApiException: HTTP request failed, Status: 403
               at com.twitter.sdk.android.core.Callback.onResponse(Callback.java:42)
               at retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall$1$1.run(ExecutorCallAdapterFactory.java:68)
               at android.os.Handler.handleCallback(Handler.java:739)
               at android.os.Handler.dispatchMessage(Handler.java:95)
               at android.os.Looper.loop(Looper.java:145)
               at android.app.ActivityThread.main(ActivityThread.java:6946)
               at java.lang.reflect.Method.invoke(Native Method)
               at java.lang.reflect.Method.invoke(Method.java:372)
               at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404)
               at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199)
E/Twitter: Authorization completed with an error
           com.twitter.sdk.android.core.TwitterAuthException: Failed to get request token
               at com.twitter.sdk.android.core.identity.OAuthController$1.failure(OAuthController.java:94)
               at com.twitter.sdk.android.core.internal.oauth.OAuth1aService$1.failure(OAuth1aService.java:191)
               at com.twitter.sdk.android.core.Callback.onResponse(Callback.java:42)
               at retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall$1$1.run(ExecutorCallAdapterFactory.java:68)
               at android.os.Handler.handleCallback(Handler.java:739)
               at android.os.Handler.dispatchMessage(Handler.java:95)
               at android.os.Looper.loop(Looper.java:145)
               at android.app.ActivityThread.main(ActivityThread.java:6946)
               at java.lang.reflect.Method.invoke(Native Method)
               at java.lang.reflect.Method.invoke(Method.java:372)
               at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404)
               at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199)

Please Help..

frared358 avatar Nov 15 '18 11:11 frared358