iOS Twitter Kit使用会收到错误“请求失败:禁止”

问题描述 投票:7回答:3

我有类似的问题to this one,我无法找到答案,因为这个问题没有解决。

问题是我在设置Twitter Kit和Fabric之后在Xcode的控制台中得到了这个,为twitter添加了秘密和api密钥:

错误域= TwitterAPIErrorDomain代码= 200“请求失败:禁止(403)”UserInfo = 0x7fdd9ac48ef0 {NSErrorFailingURLKey = https://api.twitter.com/1.1/guest/activate.json,NSLocalizedDescription =请求失败:禁止(403),NSLocalizedFailureReason = Twitter API错误:禁止。 (代码200)}

我的代码使用Twitter Kit并产生上述错误:

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

[client loadUserWithID:kTwitterUser completion:^ (TWTRUser *user, NSError *error) {
     if (error) {
        NSLog(@"ERROR CARL %@", error);
     } else {
        NSLog(@"User %@", user);
     }
}];
ios objective-c twitter twitter-fabric
3个回答
3
投票

这是一个非常古老的问题,但我想在那里找到答案,以防有人遇到这个问题。

此错误或多或少表示您的“consumerKey”和“consumerSecret”不正确。

愚蠢的是,有3种方法可以产生这种方式,它们都会产生不同的密钥。一个是通过Twitter开发网站,当你通过Fabric应用程序安装TwitterKit时会自动创建一个,当你激活TwitterKit时,一个是通过Fabric网站创建的。

TwitterKit consumerKey / consumerSecrets的所有变体对我来说都不适用,除了我在Fabric网站上创建的那个。

登录Fabric网站,找到您的应用并点按它,然后在左侧面板中选择Add Kit。通过添加工具包然后返回应用程序主页并点击刚添加的工具包,它应该具有您应该使用的正确密钥/秘密。

此外,请确保您在Plist TwitterKit条目和AppDelegate初始化中使用同一组键。


4
投票

解决'[TwitterKit]错误获取用户身份验证令牌。错误:请求失败:禁止(403)'

以下是在没有Fabric的Swift 4及更高版本中使用TwitterKit进行Twitter登录的分步指南。

第1步:您必须拥有有效的Twitter a / c。登录a / c。 ==>转到https://developer.twitter.com/en/apps/ ==>创建新应用程序==>提供所有详细信息。请记住所有细节都是必要的,因此请仔细填写。回拨网址非常重要,并且具有特定格式,例如“twitterkit-CONSUMER API KEY://”(您将在创建应用后获得)。 ==>创建应用程序。 ==>单击您刚刚创建的应用详细信息。你会看到'钥匙和代币'。选择此项以查看应用消费者密钥和密钥。这对您的iOS项目是必要的。

第2步:打开Xcode项目并创建单个视图应用程序。为项目命名,然后单击“下一步”。默认情况下有一个ViewController.swift类。转到该ViewController的故事板并创建“登录Twitter”按钮,或者您可以按代码创建按钮。在您执行的按钮操作中,编写以下代码。

     // Swift
        TWTRTwitter.sharedInstance().logIn(completion: { (session, error) in
            if (session != nil) {
                print("signed in as \(session!.userName)");
            } else {
                print("error: \(error!.localizedDescription)");
            }
        })
    }

第3步:按pod安装TwitterKit和Firebase。 pod'TwitterKit'pod'Firebase / Core'

第4步:创建应用程序并完成所有步骤后,不要忘记在应用程序的Xcode中的info.plist文件中添加以下提供的XML代码。为此,只需单击info.plist文件并选择Open as source Code。现在,在标记之后,将以下XML片段插入其中:

<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>twitterkit-ConsumerKey</string>
</array>
</dict>
</array>
<key>LSApplicationQueriesSchemes</key>
<array>
<string>twitter</string>
<string>twitterauth</string>
</array>

现在,将ConsumerKey替换为您自己的消费者密钥(Twitter API密钥),您可以在Twitter应用程序仪表板中为新创建的应用程序获取该密钥。

步骤5:打开AppDelegate.swift文件并在其第一个应用程序函数中添加以下代码行,即

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
Twitter.sharedInstance().start(withConsumerKey:“#################”, consumerSecret:“##############################”)
return true
}

另外在这里添加一个函数:func application(_ app:UIApplication,open url:URL,options:[UIApplicationOpenURLOptionsKey:Any] = [:]) - > Bool {return Twitter.sharedInstance()。application(app,open:url ,选项:选项)}

第6步:转到https://firebase.google.com ==>点击GO TO CONSOLE ==>添加项目==>提供项目名称==>接受条款和条件。 ==>创建项目==>将创建项目==>选择继续==>选择iOS ==>提供套件ID,昵称并单击注册应用程序按钮==>下载配置文件并移动GoogleService-Info您刚刚下载到Xcode项目根目录的.plist文件,并将其添加到所有目标。 ==>下一步==>无需安装Firebase,因为您已经安装了此通过pod。单击下一步==>在顶部的AppDelegate文件中导入Firebase并在AppDelegate中粘贴下面的“FirebaseApp.configure()”函数

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?){
FirebaseApp.configure()
}

步骤7:如果您之前在设备中运行它并重新安装,请卸载刚刚创建的应用程序。 ==>等待2分钟。 ==>您将收到一条消息'恭喜,您已成功将Firebase添加到您的应用中'。此消息是必要的,这意味着成功。继续到控制台

步骤8:选择您身份验证==>选择登录方式==>选择Twitter并使用API​​密钥和密钥启用它。单击保存。

第9步:点击“登录Twitter”按钮,您将看到该应用程序正在重定向到“授权”页面。

太棒了..全部完成..谢谢..


3
投票

我们的Android和iOS应用程序遇到了相同的403 forbidden错误代码。原因是最近的API更改,需要为https://developer.twitter.com/en/apps/YOUR-APP-ID上的应用程序列出以下URL方案的白名单:

TwitterKit for Android:twittersdk://

适用于iOS的TwitterKit:twitterkit-YOUR_CONSUMER_KEY://

资料来源:https://github.com/twitter/twitter-kit-android/issues/134

虽然答案很可能在该特定情况下没有解决上述问题,但它仍然与所描述的问题相关。

© www.soinside.com 2019 - 2024. All rights reserved.