我有什么似乎是确切的问题,但我的应用程序沙盒模式已经被禁用。这个应用程序之前一直运行良好,但我刚刚升级了 SDK,现在发生了这种情况。
如果我在 iOs 中配置了 facebook 帐户,它可以正常工作,但如果没有,它会崩溃。值得一提的是,如果我删除了 url 方案,那么该应用程序就无法访问网络浏览器或 facebook 应用程序,它将使用一个网络视图来登录,这也可以
编辑:据我所知,我的问题在于无法访问我在 facebook 中的应用程序设置。facebook SDK 执行 [FBUtility fetchAppSettings:callback:] 调用,更具体地说,它执行
https://graph.facebook.com/267496536695242?fields=supports_attribution,supports_implicit_sdk_logging,suppress_native_ios_gdp,name,
在我的应用程序失败的情况下:
{
"error": {
"message": "Unsupported get request.",
"type": "GraphMethodException",
"code": 100
}
}
相比之下,任何示例应用程序,例如这个,SessionLoginSample
https://graph.facebook.com/380615018626574?fields=supports_attribution,supports_implicit_sdk_logging,suppress_native_ios_gdp,name
正确返回:
{
"supports_attribution": true,
"supports_implicit_sdk_logging": true,
"suppress_native_ios_gdp": 0,
"name": "SessionLoginSample",
"id": "380615018626574"
}
因为 SDK 期望某些东西,所以它会不断发出相同的请求并陷入循环,直到模拟器崩溃。
为了确认这一点,我在回调中手动插入了预期的参数,修改了 facebook sdk,现在一切正常。
值得一提的是,我从已弃用的 2.0 升级了 SDK,设置页面中有一些参数已过时(未设置客户端令牌,授权为原生/桌面而不是 Web,应用中没有应用密钥) 但我已经把它们设置好了..
编辑 2:这是我修改过的 Facebook SDK(在 FBUtility.m 中)的方法。我只添加了“坏东西” if 子句。
+ (void)fetchAppSettings:(NSString *)appID
callback:(void (^)(FBFetchedAppSettings *, NSError *))callback {
if (!g_fetchedAppSettingsError && !g_fetchedAppSettings) {
NSString *pingPath = [NSString stringWithFormat:@"%@?fields=supports_attribution,supports_implicit_sdk_logging,suppress_native_ios_gdp,name", appID, nil];
FBRequest *pingRequest = [[[FBRequest alloc] initWithSession:nil graphPath:pingPath] autorelease];
if ([pingRequest startWithCompletionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
// Bad stuff
if (error) {
error = nil;
result = [NSDictionary dictionaryWithObjectsAndKeys:@"true", @"supports_attribution",
@"true", @"supports_implicit_sdk_logging",
@"0", @"suppress_native_ios_gdp",
@"Your_App_Display_Name", @"name", nil];
}
if (error) {
g_fetchedAppSettingsError = error;
[g_fetchedAppSettingsError retain];
} else {
g_fetchedAppSettings = [[[FBFetchedAppSettings alloc] init] retain];
if ([result respondsToSelector:@selector(objectForKey:)]) {
g_fetchedAppSettings.serverAppName = [result objectForKey:@"name"];
g_fetchedAppSettings.supportsAttribution = [[result objectForKey:@"supports_attribution"] boolValue];
g_fetchedAppSettings.supportsImplicitSdkLogging = [[result objectForKey:@"supports_implicit_sdk_logging"] boolValue];
g_fetchedAppSettings.suppressNativeGdp = [[result objectForKey:@"suppress_native_ios_gdp"] boolValue];
}
}
[FBUtility callTheFetchAppSettingsCallback:callback];
}
]
);
} else {
[FBUtility callTheFetchAppSettingsCallback:callback];
}
}