2012-06-12 56 views
2

我是新來的iOS開發,我已經成功地集成了Facebook登錄和這樣的......但我的問題是與分數API。我可以讀出成績,但我不能似乎將它張貼,我有publish_actions許可,也就是取回一個有效access_token.Not知道是什麼問題吧,這裏是我的代碼 -Facebook的api與iOS5.1 - 可以讀取分數...但不能發佈他們

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]; 

編輯 - 解決

所以bascially我傳遞正確的標記,但Facebook的SDK在Facebook.m覆蓋它給用戶的訪問TOK恩。所以修復很簡單 - 只要我需要傳入應用程序的令牌,我只需添加其他參數< key = @「useAppToken」Value = @「yes」>,然後在Facebook.m中添加一條if語句在isSessionValid中 -

- (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; 

}

務必在此註釋掉NSLogs ... :)

回答

1

成績只能使用應用程序access_token,而不是一個用戶(您可能使用被公開,這是確定的閱讀分數,但不允許你發表他們)。

援引Scores documentaion

創建或更新用戶的得分
您可以發佈一個分數或只要發出HTTPPOST請求/USER_ID/scores與應用access_token您一個用戶具有publish_actions權限。

+1

+1,基本上你做這個服務器端 - 否則用戶可以更新自己的分數 – Igy

+0

哦哇。感謝你能這麼快回復!! - 所以基本上我使用access_token /分數? – user1450760

+0

好,所以我試着做access_token /分數(儘管它沒有意義),它沒有更新任何東西 – user1450760

相關問題