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

Yev*_*ska 9 twitter objective-c ios twitter-fabric

我和这个问题的问题非常相似,我找不到答案,因为这个问题没有解决.

问题是我在设置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);
     }
}];
Run Code Online (Sandbox Code Playgroud)

Raj*_*ahu 5

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

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

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

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

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

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

第 4 步:创建应用程序并执行所有步骤后,不要忘记在 Xcode 中应用程序的 info.plist 文件中添加以下提供的 XML 代码。为此,只需单击您的 info.plist 文件并选择 Open as a 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>
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

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

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

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

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

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

太好了..一切都完成了..谢谢你..


小智 5

我们403 forbidden的Android和iOS应用程序遇到了相同的错误代码。原因是最近的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

尽管在该特定情况下答案很可能无法解决上述问题,但仍与所描述的问题有关。


Wil*_* T. 4

这是一个很老的问题,但我想给出一个答案,以防有人遇到这个问题。

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

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

除了我在 Fabric 网站上创建的版本之外,TwitterKit ConsumerKey/consumerSecrets 的所有变体都不适用于我。

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

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

  • 来自 Fabric 的迈克。只是为了澄清一些事情 - 通过 Twitter Kit 安装时自动创建的一个密钥是您的 Fabric API 密钥。通过网站或在新 Fabric 帐户上安装 Twitter 工具包时创建的密钥和秘密是 Twitter 消费者密钥和秘密,它们决定您访问 Twitter 上数据的权限。希望有点帮助! (3认同)