我正在尝试 Snpachat 的 SnapKit 登录 api,并且我已经按照文档/指南中的描述设置了我的项目。我允许在仪表板中使用所有范围,即外部 id、显示名称和 bitmoji,并在我的应用程序的 .plist 中添加所需字段。
登录和身份验证正常进行并成功返回,但是当我尝试获取用户数据时,该请求每次都会失败,并出现 SCOAuth2ClientErrorDomain 错误。
我正在使用指南中提供的代码片段(尽管该代码有一个拼写错误并且没有按原样构建,所以我怀疑该代码的有效性):
[SCSDKLoginClient loginFromViewController:self completion:^(BOOL success, NSError * _Nullable error) {
NSString *graphQLQuery = [@"{me{displayName, bitmoji{avatar}, externalId}}" stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSDictionary *variables = @{@"page": @"bitmoji"};
[SCSDKLoginClient fetchUserDataWithQuery:graphQLQuery
variables:variables
success:^(NSDictionary *resources) {
NSDictionary *data = resources[@"data"];
NSDictionary *me = data[@"me"];
NSString *displayName = me[@"displayName"];
NSDictionary *bitmoji = me[@"bitmoji"];
NSString *bitmojiAvatarUrl = bitmoji[@"avatar"];
} failure:^(NSError * error, BOOL isUserLoggedOut) {
// handle error as appropriate
}];
}];
我什至尝试在没有 Bitmoji 的情况下配置我的应用程序,并在没有 Bitmoji 的情况下尝试请求,但它仍然失败。
[SCSDKLoginClient loginFromViewController:self completion:^(BOOL success, NSError * _Nullable error) {
NSString *graphQLQuery = [@"{me{displayName, externalId}}" stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
[SCSDKLoginClient fetchUserDataWithQuery:graphQLQuery
variables:nil
success:^(NSDictionary *resources) {
NSDictionary *data = resources[@"data"];
NSDictionary *me = data[@"me"];
NSString *displayName = me[@"displayName"];
} failure:^(NSError * error, BOOL isUserLoggedOut) {
// handle error as appropriate
}];
}];
有人知道我可能做错了什么吗?
最佳答案
好的,我成功了。
首先,我将正在测试的用户重新添加到开发人员门户中的演示用户中。之后,SCOAuth2ClientErrorDomain 错误消失,我收到了成功回调。
但是,响应数据是查询字符串中的错误。问题是他们使用了已弃用的方法stringByAddingPercentEscapesUsingEncoding。我不确定确切的问题是什么,但我刚刚发送了原始字符串作为查询,并且得到了有效的响应。
更新:我认为这里不需要编码。对于 api 用户来说,对查询进行编码是没有意义的。 api 应该在内部处理它,我认为这就是这里可能发生的情况。因此,您可能会得到一个双重编码的查询,该查询的编码不正确并且无效。我使用未弃用的 URL 查询方法测试了编码,但仍然不起作用。原始查询字符串是正确的选择。
关于ios - iOS 上的 Snapchat SnapKit 登录总是失败 'fetchUserDataWithQuery' 并显示 SCOAuth2ClientErrorDomain 403,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51246144/