我是iOS开发的新手,我已经成功整合了facebook登录等...但是我的问题是得分api。我可以读取分数,但我似乎无法发布它,我有publish_actions权限,也回来了一个有效的access_token.Not确定它的问题,这里是我的代码 -
NSString *accessTokenToUse = [NSString stringWithFormat:@"%@",[self.facebook accessToken] ];
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
//@"233", @"score",
accessTokenToUse, @"access_token",
nil];
NSMutableDictionary *paramsB = [NSMutableDictionary dictionaryWithObjectsAndKeys:
@"233", @"score",
accessTokenToUse, @"access_token",
nil];
NSLog(@"APP ACCESS TOKEN: %@",accessTokenToUse);
[self.facebook requestWithGraphPath:@"me/scores" andParams:paramsB andHttpMethod:@"POST" andDelegate:self];
[self.facebook requestWithGraphPath:@"APP_ID/scores" andParams:params andHttpMethod:@"GET" andDelegate:self];
***编辑 - 仍然无效
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
@"233", @"score",
@"[APP_ACCESS_TOKEN (omitted for stackoverflow)]", @"access_token", nil];
[self.facebook requestWithGraphPath:@"/[userID]/scores" andParams:params andHttpMethod:@"POST" andDelegate:self];
编辑 - 已解决
所以基本上我传递了正确的令牌,但facebook sdk在Facebook.m中将其覆盖到用户的访问令牌。因此修复很简单 - 每当我需要传递App的令牌时,我只需添加一个其他参数< key = @“useAppToken”Value = @“yes”>在Facebook.m中只需在isSessionValid中添加一个if语句 -
- (FBRequest*)openUrl:(NSString *)url
params:(NSMutableDictionary *)params
httpMethod:(NSString *)httpMethod
delegate:(id<FBRequestDelegate>)delegate {
NSLog(@"PARAMS BFORE: %@ ", params);
[params setValue:@"json" forKey:@"format"];
[params setValue:kSDK forKey:@"sdk"];
[params setValue:kSDKVersion forKey:@"sdk_version"];
if ([self isSessionValid]) {
if ([params objectForKey:@"useAppToken"] == nil || [params objectForKey:@"useAppToken"] == @"no") {
[params setValue:self.accessToken forKey:@"access_token"];
}
}
NSLog(@"PARAMS AFTER: %@ ", params);
[self extendAccessTokenIfNeeded];
FBRequest* _request = [FBRequest getRequestWithParams:params
httpMethod:httpMethod
delegate:delegate
requestURL:url];
[_requests addObject:_request];
[_request addObserver:self forKeyPath:requestFinishedKeyPath options:0 context:finishedContext];
[_request connect];
return _request;
}
请务必在此评论出NSLog:...)
答案 0 :(得分:1)
分数只能使用应用程序access_token
发布,而不能用于用户(您可能正在使用它,可以阅读分数但不允许您发布它们)。
为用户创建或更新分数
只要您拥有HTTP
权限,就可以通过应用POST
向/USER_ID/scores
发出access_token
publish_actions
个请求来发布得分或用户。< / p>
答案 1 :(得分:0)
看起来这是一个错误: http://developers.facebook.com/bugs/461900043821056
但是,如果您将应用设置更改为网络应用而不是本机,则可以使用。