Facebook用iOS5.1评分api - 可以读取分数......但不能发布它们

时间:2012-06-12 09:02:50

标签: ios facebook

我是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:...)

2 个答案:

答案 0 :(得分:1)

分数只能使用应用程序access_token发布,而不能用于用户(您可能正在使用它,可以阅读分数但不允许您发布它们)。

引用Scores documentaion

  

为用户创建或更新分数
  只要您拥有HTTP权限,就可以通过应用POST/USER_ID/scores发出access_token publish_actions个请求来发布得分或用户。< / p>

答案 1 :(得分:0)

看起来这是一个错误: http://developers.facebook.com/bugs/461900043821056

但是,如果您将应用设置更改为网络应用而不是本机,则可以使用。