【问题标题】:iOS Twitter Kit usage gets error 'Request failed: forbidden'iOS Twitter Kit 使用出现错误“请求失败:禁止”
【发布时间】:2015-12-15 16:23:05
【问题描述】:

我有非常相似的问题to this one,我找不到答案,因为那个问题没有解决。

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

Error Domain=TwitterAPIErrorDomain Code=200 "请求失败:禁止 (403)" 用户信息 = 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


【解决方案1】:

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

Android 版 TwitterKit:twittersdk://

iOS 版 TwitterKit:twitterkit-YOUR_CONSUMER_KEY://

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

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

【讨论】:

    【解决方案2】:

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

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

    第 1 步: 你必须有一个有效的 Twitter a/c。登录到空调。 ==>转到https://developer.twitter.com/en/apps/ ==>创建新应用==>提供所有详细信息。请记住所有细节都是必要的,因此请仔细填写。 回调 URL 非常重要,并且具有特定的格式,例如“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。 豆荚'TwitterKit' pod 'Firebase/Core'

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

    <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 应用程序仪表板中获得的您自己的消费者密钥(Twitter API 密钥)。

    第 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 { 返回 Twitter.sharedInstance().application(app, open: url, options: options) }

    第 6 步: 转到 https://firebase.google.com ==> 单击转到控制台 ==> 添加项目 ==> 提供项目名称 ==> 接受条款和条件。 ==> 创建项目 ==> 将创建项目 ==> 选择继续 ==> 选择 iOS ==> 提供 Bundle 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 步: 点击“Login to Twitter”按钮,您将看到该应用正在重定向到授权页面。

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

    【讨论】:

      【解决方案3】:

      这是一个相当古老的问题,但我想在此给出一个答案,以防万一有人遇到这个问题。

      这个错误或多或少表明你的“consumerKey”和“consumerSecret”不正确。

      愚蠢的是,有 3 种生成方法,它们都生成不同的密钥。一种是通过 Twitter 开发网站,一种是在您通过 Fabric 应用程序安装 TwitterKit 时自动创建的,另一种是通过 Fabric 网站在您激活 TwitterKit 时自动创建的。

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

      登录 Fabric 网站,找到您的应用并点击它,然后在左侧面板上选择添加套件。完成添加工具包,然后返回应用主页并点击您刚刚添加的工具包,它应该具有您应该使用的正确密钥/秘密。

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

      【讨论】:

      • 来自 Fabric 的 Mike。只是为了澄清一些事情 - 通过 Twitter Kit 安装时自动创建的一个密钥是您的 Fabric API 密钥。通过网站或在新 Fabric 帐户上安装 Twitter 工具包时创建的是 Twitter 消费者密钥和秘密,它们决定了您访问 Twitter 数据的权限。希望对您有所帮助!
      • 嗨威廉,我仍然有这个问题,密钥是正确的,我在 appdelegate 和 plist 文件中添加了它,我该怎么办,谢谢
      • 嘿 @NadaGamal 你确定你使用的是 Fabric 网站上的密钥而不是其他密钥吗?此外,最近对 TwitterKit 的更新破坏了我的安装,我还没有让它再次工作,所以这可能是相关的。
      猜你喜欢
      • 1970-01-01
      • 2017-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-19
      • 1970-01-01
      相关资源
      最近更新 更多