skip to Main Content

I don’t success to use the Twitter API connection in iOS with Objective-C. I use that codes:

[[Twitter sharedInstance] logInWithCompletion:^
 (TWTRSession *session, NSError *error) {
     if (session) {
         NSLog(@"");
     }}];

In my AppDelegate:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
//Twitter
    [[Twitter sharedInstance] startWithConsumerKey:@"z0F**************cg" consumerSecret:@"PJu*******************N6W"];

- (BOOL)application:(UIApplication *)app
            openURL:(NSURL *)url
            options:(NSDictionary<UIApplicationOpenURLOptionsKey, id> *)options {
        return [[Twitter sharedInstance] application:app openURL:url options:options];

    return NO;
}

I precise that openURL is never called.

I obtain several error message that I don’t understand:

Error Domain=TWTRNetworkingErrorDomain Code=-1011 "Request failed: unauthorized (401)" UserInfo={NSLocalizedFailureReason=Twitter API error : <?xml version="1.0" encoding="UTF-8"?>
<hash>
  <error>Desktop applications only support the oauth_callback value 'oob'</error>
  <request>/oauth/request_token</request>
</hash>
 (code (null)), TWTRNetworkingStatusCode=401, NSErrorFailingURLKey=https://api.twitter.com/oauth/request_token, NSLocalizedDescription=Request failed: unauthorized (401)}

AND:

 [TwitterKit] did encounter error with message "Error obtaining user auth token.": Error Domain=TWTRLogInErrorDomain Code=-1 "<?xml version="1.0" encoding="UTF-8"?>
<hash>
  <error>Desktop applications only support the oauth_callback value 'oob'</error>
  <request>/oauth/request_token</request>
</hash>
" UserInfo={NSLocalizedDescription=<?xml version="1.0" encoding="UTF-8"?>
<hash>
  <error>Desktop applications only support the oauth_callback value 'oob'</error>
  <request>/oauth/request_token</request>
</hash>
}

It seems that it is not connected, I see a lot of things in Swift, but nothing in Objective-C.

Thanks in advance.

5

Answers


  1. If you read the manual https://dev.twitter.com/twitterkit/ios/access-rest-api

    Check that user is logged :

    NSString *userID = [Twitter sharedInstance].sessionStore.session.userID;
            TWTRAPIClient *client = [[TWTRAPIClient alloc] initWithUserID:userID];
    

    Add these lines:

     TWTRLogInButton *logInButton = [TWTRLogInButton buttonWithLogInCompletion:^(TWTRSession *session, NSError *error) {
            if (session) {
                NSLog(@"signed in as %@", [session userName]);
            } else {
                NSLog(@"error: %@", [error localizedDescription]);
            }
        }];
        logInButton.center = self.view.center;
        [self.view addSubview:logInButton];
    

    For the image, if you check that, it will help you: Posting image to twitter using twitterkit

    [self tweetImage: [UIImage imageNamed:@"buttonRenault.png"]];
    
    Login or Signup to reply.
  2. I get this error when i am try to integrate twitter login in my app

    Solution :

    1.
    When you create app on developer account of twitter, that time Callback Url field is not wants to empty.
    If this field is empty that time this issue comes so to overcome on this issue please don’t be empty this callback url field.

    1. This error sometimes comes when twitter consumer key or twitter secret key is mismatch.
      So check Both Scenario.

    Happy Coding….!!!

    Login or Signup to reply.
  3.     AppDelegate:
            func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    
            TWTRTwitter.sharedInstance().start(withConsumerKey:"xxxx", consumerSecret:"xxxxxxxxxxx")
                return true
            }
    
            func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
                return TWTRTwitter.sharedInstance().application(app, open: url, options: options)
            }
    
        ViewController
    
           @IBAction func twitterClick(_ sender: Any) {
                // Swift
                let composer = TWTRComposer()
    
                composer.setText("just setting up my Twitter Kit")
                composer.setImage(UIImage(named: "twitterkit"))
    
                // Called from a UIViewController
                composer.show(from: self.navigationController!) { (result) in
                    if (result == .done) {
                    print("Successfully composed Tweet")
                    } else {
                    print("Cancelled composing")
                    }
                }
            }
    
            @IBAction func logOutUserTwitter(_ sender: Any) {
                // Swift
                let store = TWTRTwitter.sharedInstance().sessionStore
    
                if let userID = store.session()?.userID {
                    store.logOutUserID(userID)
                }
            }
    
     Info.plist
    <key>CFBundleURLTypes</key>
    <array>
      <dict>
        <key>CFBundleURLSchemes</key>
        <array>
          <string>twitterkit-<xxxx></string>
        </array>
      </dict>
    </array>
    <key>LSApplicationQueriesSchemes</key>
    <array>
        <string>twitter</string>
        <string>twitterauth</string>
    </array>
    
    Settings Twitter page develop:
    Callback URL enter http://localhost
    

    https://github.com/twitter/twitter-kit-ios/wiki/Installation

    Login or Signup to reply.
  4. disable in twitter this: Enable Callback Locking (It is recommended to enable callback locking to ensure apps cannot overwrite the callback url)
    and paste something to the callback url

    Login or Signup to reply.
  5. From June 12th 2018 callback locking will no longer be optional. The correct callback format for iOS apps is:

    twitterkit-MY_CONSUMER_KEY://
    

    https://developer.twitter.com/en/docs/basics/developer-portal/guides/callback-urls

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search