gpt4 book ai didi

iphone - iOS 6 SDK SLRequest 返回 '400'

转载 作者:行者123 更新时间:2023-12-03 21:15:49 25 4
gpt4 key购买 nike

让我澄清一下。我没有使用 Facebook SDK。我使用 iOS SDK 的 Social.frameworkACAccountStore 访问 Facebook 帐户,并使用它/它们发帖。

我使用相同的代码在 Twitter 上发帖。 100%有效。但出于某种原因,无论我为 Facebook 集成做了什么,当我尝试发帖时都会收到“400”错误。

我的方法是:

ACAccountStore *account = [[ACAccountStore alloc] init];
ACAccountType *facebookAccountType = [account accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook];

// Specify App ID and permissions
NSDictionary *options = @{ ACFacebookAppIdKey: @"MY_APP_ID",ACFacebookPermissionsKey: @[@"publish_stream", @"publish_actions"],ACFacebookAudienceKey: ACFacebookAudienceFriends };
[account requestAccessToAccountsWithType:facebookAccountType options:options
completion:^(BOOL granted, NSError *error)
{
if (granted == YES)
{
NSDictionary *parameters = @{@"message": string999};
NSURL *feedURL = [NSURL URLWithString:@"https://graph.facebook.com/me/feed"];

SLRequest *feedRequest = [SLRequest
requestForServiceType:SLServiceTypeFacebook
requestMethod:SLRequestMethodPOST
URL:feedURL
parameters:parameters];

acct.accountType = facebookAccountType;

// Post the request
[feedRequest setAccount:acct];

// Block handler to manage the response
[feedRequest performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error)
{
if (granted && error == nil) {
} else {
NSLog(@"Facebook response, HTTP response: %i %@", [urlResponse statusCode], [error description]);
[self closeShareMenu];
}
}];
}
}

我不知道我错在哪里!真烦人!我已经在 Facebook Developers 等中正确设置了我的应用程序!请帮忙-_-'

最佳答案

跟进@fguchelaar 和您昨天举行的聊天 session ;我能够确定此问题的以下解决方案。

在您的 iOS 完成处理程序中添加以下内容:

NSString *temp = [[NSString alloc] initWithData:data encoding: NSUTF8StringEncoding];
NSLog(temp);
//'data' is your 'responseData' (or another object name) that you declare in your completion handler.

这将使您能够看到打印到调试控制台的问题的确切原因。现在,根据所出现的问题,您需要从在 iPhone SDK 中调用此处理程序时生成的帐户数组中获取 Facebook 帐户。任何先前阶段都不会,因为访问 token 可能会过期并给您显示“400”错误。

就我而言;打印的错误是: error:{'400' A valid access token is required… 这让我非常恼火,因为我之前访问和检查当前 Twitter 帐户的方法运行良好。我的理论是,它应该同样适用于 Facebook。如果我一瞬间就获取了该帐户,为什么要立即撤销访问 token ?

我解决问题的方法(根据错误原因,答案可能会有所不同)是使用 for 循环来检查新创建的帐户数组,其唯一目的是找到具有相同标识符的帐户字符串作为我保存到 NSData/NSKeyedArchiver 中的字符串。

for(ACAccount *a in arrayOfAccounts) {
if([a.identifier isEqualToString:storedAccount.identifier]) {
//set the account to be used
accountToBeUsed = a;

//don't forget to break the For loop once you have your result.
break;
} else {
//This else{} block is not strictly necessary, but here you could set an account if no account was found with a matching identifier.
}
}

为了使其正常工作,建议在 View Controller 的 .h 文件中声明一个 ACAccount 对象,添加 @property@synthesize > 它,因此可以在 for 循环 中对其进行赋值,并在 break; 语句之后使用。

这有效地解决了我的“400”错误的整个问题。我一天中大约六个小时都感到莫名其妙的沮丧,所以我希望我的解释能够帮助任何偶然发现这个问题的人,以及我在 Stack Overflow 上的问题:)

问候,椰子

关于iphone - iOS 6 SDK SLRequest 返回 '400',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14191946/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com