iOS Twitter 套件使用出现错误 'Request failed: forbidden'
iOS Twitter Kit usage gets error 'Request failed: forbidden'
我有非常相似的问题 to this one,但我找不到答案,因为那个问题没有得到解决。
问题是我在设置 Twitter Kit 和 Fabric 后在 Xcode 的控制台中得到了这个,将 secret 和 api 密钥添加到 plist:
Error Domain=TwitterAPIErrorDomain Code=200 "Request failed: forbidden
(403)" UserInfo=0x7fdd9ac48ef0
{NSErrorFailingURLKey=https://api.twitter.com/1.1/guest/activate.json,
NSLocalizedDescription=Request failed: forbidden (403),
NSLocalizedFailureReason=Twitter API error : Forbidden. (code 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);
}
}];
这是一个很老的问题,但我想在这里给出一个答案,以防有人遇到这个问题。
这个错误或多或少说明你的"consumerKey"和"consumerSecret"不正确。
愚蠢的是,有 3 种生成方法,它们都生成不同的密钥。一种是通过 Twitter 开发网站,一种是在您通过 Fabric 应用程序安装 TwitterKit 时自动创建的,一种是通过 Fabric 网站,当您激活 TwitterKit 时。
TwitterKit consumerKey/consumerSecrets 的所有变体都不适用于我,除了我在 Fabric 网站上创建的变体。
登录 Fabric 网站,找到您的应用并点击它,然后在左侧面板上点击 select 添加套件。通过添加套件,然后返回应用程序主页并点击您刚刚添加的套件,它应该具有您应该使用的正确 keys/secrets。
此外,请确保您在 Plist TwitterKit 条目和 AppDelegate 初始化中使用了同一组键。
'[TwitterKit] 获取用户授权令牌时出错的解决方案。错误:请求失败:禁止 (403)'
以下是在 Swift 4 及更高版本(不使用 Fabric)中使用 TwitterKit 登录 Twitter 的分步指南。
第一步:
您必须拥有有效的 Twitter a/c。登录 a/c。 ==> Goto https://developer.twitter.com/en/apps/ ==> 创建新应用 ==> 提供所有详细信息。请记住所有细节都是必要的,因此请仔细填写。
回调 URL 非常重要,并且具有像 'twitterkit-CONSUMER API KEY://' 这样的特定格式(您将在创建应用程序后获得)。 ==> 创建应用程序。 ==> 单击您刚刚创建的应用详细信息。你会看到 'Keys & Tokens'。 Select 这个要看你的app Consumer Key & Secret。这对您的 iOS 项目是必要的。
第 2 步:
打开您的 Xcode 项目并创建一个单视图应用程序。为您的项目命名,然后单击“下一步”。默认情况下有一个 ViewController.swift class。转到那个 ViewController 的 Storyboard 并创建一个 'Login to 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'
吊舱 'Firebase/Core'
第 4 步:
创建您的应用程序并执行所有步骤后,请不要忘记在 Xcode 中应用程序的 info.plist 文件中添加下面提供的 XML 代码。为此,只需单击您的 info.plist 文件并 select 作为源代码打开。现在,就在标记之后,将以下 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, options: options)
}
第 6 步:
转到 https://firebase.google.com ==> 单击转到控制台 ==> 添加项目 ==> 提供项目名称 ==> 接受条款和条件。 ==> 创建项目 ==> 将创建项目 ==> Select 继续 ==> Select iOS ==> 提供 Bundle id、Nick 名称并单击 Register app 按钮 = => 下载配置文件并将刚刚下载的 GoogleService-Info.plist 文件移动到 Xcode 项目的根目录,并将其添加到所有目标。 ==> 下一步 ==> 不需要安装 Firebase,因为你已经通过 pod 安装了它。单击下一步 ==> 在顶部的 AppDelegate 文件中导入 Firebase 并在 AppDelegate
的下面函数中粘贴 'FirebaseApp.configure()'
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?){
FirebaseApp.configure()
}
第 7 步:
如果您之前在设备中 运行 卸载刚刚制作的应用程序并重新安装。 ==> 等待 2 分钟。 ==> 您将收到一条消息 'Congratulations, you have successfully added Firebase into your app'。此消息是必需的,这意味着成功。继续控制台
第 8 步:
Select 您的身份验证 ==> Select 登录方法 ==> Select Twitter 并使用 API 密钥和密码启用它。单击保存。
第 9 步:
单击 'Login to Twitter' 按钮,您将看到应用程序正在重定向到授权页面。
太好了..全部完成..谢谢..
我们的 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
虽然在那个特定情况下答案很可能无法解决上述问题,但它仍然与所描述的问题相关。
我有非常相似的问题 to this one,但我找不到答案,因为那个问题没有得到解决。
问题是我在设置 Twitter Kit 和 Fabric 后在 Xcode 的控制台中得到了这个,将 secret 和 api 密钥添加到 plist:
Error Domain=TwitterAPIErrorDomain Code=200 "Request failed: forbidden (403)" UserInfo=0x7fdd9ac48ef0 {NSErrorFailingURLKey=https://api.twitter.com/1.1/guest/activate.json, NSLocalizedDescription=Request failed: forbidden (403), NSLocalizedFailureReason=Twitter API error : Forbidden. (code 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);
}
}];
这是一个很老的问题,但我想在这里给出一个答案,以防有人遇到这个问题。
这个错误或多或少说明你的"consumerKey"和"consumerSecret"不正确。
愚蠢的是,有 3 种生成方法,它们都生成不同的密钥。一种是通过 Twitter 开发网站,一种是在您通过 Fabric 应用程序安装 TwitterKit 时自动创建的,一种是通过 Fabric 网站,当您激活 TwitterKit 时。
TwitterKit consumerKey/consumerSecrets 的所有变体都不适用于我,除了我在 Fabric 网站上创建的变体。
登录 Fabric 网站,找到您的应用并点击它,然后在左侧面板上点击 select 添加套件。通过添加套件,然后返回应用程序主页并点击您刚刚添加的套件,它应该具有您应该使用的正确 keys/secrets。
此外,请确保您在 Plist TwitterKit 条目和 AppDelegate 初始化中使用了同一组键。
'[TwitterKit] 获取用户授权令牌时出错的解决方案。错误:请求失败:禁止 (403)'
以下是在 Swift 4 及更高版本(不使用 Fabric)中使用 TwitterKit 登录 Twitter 的分步指南。
第一步: 您必须拥有有效的 Twitter a/c。登录 a/c。 ==> Goto https://developer.twitter.com/en/apps/ ==> 创建新应用 ==> 提供所有详细信息。请记住所有细节都是必要的,因此请仔细填写。 回调 URL 非常重要,并且具有像 'twitterkit-CONSUMER API KEY://' 这样的特定格式(您将在创建应用程序后获得)。 ==> 创建应用程序。 ==> 单击您刚刚创建的应用详细信息。你会看到 'Keys & Tokens'。 Select 这个要看你的app Consumer Key & Secret。这对您的 iOS 项目是必要的。
第 2 步: 打开您的 Xcode 项目并创建一个单视图应用程序。为您的项目命名,然后单击“下一步”。默认情况下有一个 ViewController.swift class。转到那个 ViewController 的 Storyboard 并创建一个 'Login to 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' 吊舱 'Firebase/Core'
第 4 步: 创建您的应用程序并执行所有步骤后,请不要忘记在 Xcode 中应用程序的 info.plist 文件中添加下面提供的 XML 代码。为此,只需单击您的 info.plist 文件并 select 作为源代码打开。现在,就在标记之后,将以下 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, options: options) }
第 6 步: 转到 https://firebase.google.com ==> 单击转到控制台 ==> 添加项目 ==> 提供项目名称 ==> 接受条款和条件。 ==> 创建项目 ==> 将创建项目 ==> Select 继续 ==> Select iOS ==> 提供 Bundle id、Nick 名称并单击 Register app 按钮 = => 下载配置文件并将刚刚下载的 GoogleService-Info.plist 文件移动到 Xcode 项目的根目录,并将其添加到所有目标。 ==> 下一步 ==> 不需要安装 Firebase,因为你已经通过 pod 安装了它。单击下一步 ==> 在顶部的 AppDelegate 文件中导入 Firebase 并在 AppDelegate
的下面函数中粘贴 'FirebaseApp.configure()'func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?){
FirebaseApp.configure()
}
第 7 步: 如果您之前在设备中 运行 卸载刚刚制作的应用程序并重新安装。 ==> 等待 2 分钟。 ==> 您将收到一条消息 'Congratulations, you have successfully added Firebase into your app'。此消息是必需的,这意味着成功。继续控制台
第 8 步: Select 您的身份验证 ==> Select 登录方法 ==> Select Twitter 并使用 API 密钥和密码启用它。单击保存。
第 9 步: 单击 'Login to Twitter' 按钮,您将看到应用程序正在重定向到授权页面。
太好了..全部完成..谢谢..
我们的 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
虽然在那个特定情况下答案很可能无法解决上述问题,但它仍然与所描述的问题相关。