swift - 创建没有完成块的 Twitter 登录按钮?

Posted

技术标签:

【中文标题】swift - 创建没有完成块的 Twitter 登录按钮?【英文标题】:swift - Twitter login button created with no completion block? 【发布时间】:2015-08-12 00:38:14 【问题描述】:

我正在实现一个 TWTRLoginButton,但由于某种原因,完成块没有注册/被调用,我不知道为什么会这样......

登录按钮初始化:

self.twitterLoginView = TWTRLogInButton(logInCompletion:  session, error in
        if (session != nil) 
            print("signed in as \(session.userName)");
         else 
            print("error: \(error.localizedDescription)");
        
    )

点击按钮时出错:

TWTRLogInButton 是在没有设置完成块的情况下创建的

【问题讨论】:

【参考方案1】:

当应用从 twitter 重定向回来时,您需要让 TwitterKit 处理重新打开应用:

func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool 
    let twtrHandled = TWTRTwitter.sharedInstance().application(app, open: url, options: options)
    return twtrHandled

【讨论】:

【参考方案2】:

在代码或故事板中取一个 UIButton,然后将按钮操作赋予以下方法。

 -(IBAction)twitterLogin:(id)sender


    [[Twitter sharedInstance] logInWithCompletion:^(TWTRSession *session, NSError *error)
        if (session)
        
             [[Twitter sharedInstance]ini]
             [[[Twitter sharedInstance] APIClient] loadUserWithID:[session userID]
                                                       completion:^(TWTRUser *user,
                                                                    NSError *error)
              
                  // handle the response or error
                  if (![error isEqual:nil]) 

                      NSLog(@"Twitter info   -> user = %@ ",user.description);
                      
                          NSMutableDictionary *dict =[[NSMutableDictionary alloc]init];
                          [dict setValue:user.userID forKey:@"id"];
                          [dict setValue:user.name forKey:@"name"];
                          [dict setValue:user.screenName forKey:@"screenName"];
                          NSLog(@"User Description is %@",dict);
                      

                   else 
                  
              ];

          else 
             NSLog(@"error: %@", [error localizedDescription]);
         
     ];


【讨论】:

以上是关于swift - 创建没有完成块的 Twitter 登录按钮?的主要内容,如果未能解决你的问题,请参考以下文章

Firebase Twitter oAuth 回调不适用于 Swift ios13

TabBar 图标对选择的反弹效果就像 Swift 中的 Twitter 应用程序

Swift:如何在动态 UITableView 的自定义单元格中获取滑块的值?

Twitter个人资料页面iOS Swift剖析(UIScrollView中的多个UITableViews)

递归函数,带有完成块,检索多个 MKDirections - Swift

Swift:通过深度链接到 Twitter 应用程序将图像共享到 Twitter