我也在尝试使用图形 api 发布通知。我首先请求正确返回的应用程序 access_token。然后我将它用作通知请求的参数,就像应该做的那样。但是,我仍然收到相同的错误消息“必须使用应用程序 access_token 调用此方法”......并且是的,该应用程序配置为 Web 应用程序。
前五个小时很有趣,但它变得有点烦人......
任何其他的想法,世界?请?
编辑:
我整晚都在与这个问题作斗争,第二天早上,我最终决定放弃它。这个 API 肯定有我不理解的问题,而且我无法在任何地方找到任何解决方案。
关于我所做的一些细节,以防有人提出想法:
这是一个 iOS 应用程序,使用 Facebook iOS SDK。登录、授权、获取朋友资料、在我的墙上发布消息:一切正常。
然后,为了发送通知,我首先发送请求以检索应用访问令牌。
NSDictionary* parameters = @{@"client_id": [THE APP FACEBOOK ID], @"client_secret" : [THE APP FACEBOOK SECRET], @"grant_type" : @"client_credentials"};
NSURL* feedURL = [NSURL URLWithString:@"https://graph.facebook.com/oauth/access_token"];
SLRequest *feedRequest = [SLRequest requestForServiceType:SLServiceTypeFacebook requestMethod:SLRequestMethodGET URL:feedURL parameters:parameters];
feedRequest.account = self.account;
[feedRequest performRequestWithHandler ... ]
请求回答:
NSString* tokenString = [[NSString alloc] initWithBytes:[responseData bytes] length:[responseData length] encoding: NSUTF8StringEncoding];
NSArray* chunks = [tokenString componentsSeparatedByString: @"="];
NSString* appAccessToken = [chunks objectAtIndex:1];
NSLog(@"appAccessToken '%@'", appAccessToken);
这似乎按预期工作。我得到:
appAccessToken '1309[HIDDEN]|-eta-nuWz[HIDDEN]'
现在,我尝试发布通知
NSDictionary* parameters = @{@"href": [myHref absoluteString], @"access_token" : appAccessToken, @"template" : myMessage};
NSURL* feedURL = [NSURL URLWithString:[NSString stringWithFormat:@"https://graph.facebook.com/%@/notifications", theRecipientFacebookId];
SLRequest* feedRequest = [SLRequest requestForServiceType:SLServiceTypeFacebook requestMethod:SLRequestMethodPOST URL:feedURL parameters:parameters];
feedRequest.account = self.account;
[feedRequest performRequestWithHandler: ... ]
不幸的是,我不断得到这个:
error = {
code = 15;
message = "(#15) This method must be called with an app access_token.";
type = OAuthException;
};
这真的让我发疯了......