在我和另一个用户之间获取Facebook Mutual朋友

时间:2014-08-09 22:53:01

标签: ios facebook facebook-graph-api

我想在我的ios App中获取Facebook Mutual朋友

这是我尝试通过此链接呼叫的共同朋友

[NSString stringWithFormat:@"me/mutual_friends/%@?fields=installed",fbuserId]

它给我错误代码5 当我使用@"me/friends"时 它返回结果 我也尝试使用图形api资源管理器,它提供了未知的路径

APi Graph Explorer try

另外我的应用有user_friends权限 谁能告诉我正确的道路?

2 个答案:

答案 0 :(得分:2)

你正在使用错误的端点语法,正如@CBroe已经指出的那样,文档中也清楚这一点。

您需要使用

/{user-id}.context/mutual_friends

{user-id}是您感兴趣的用户,“其他”用户是访问令牌用于请求的用户。这仅适用于已经是您应用的用户的用户。

答案 1 :(得分:0)

是的,我很适合你的解决方案。

NSString *myFriendId = [NSString stringWithFormat:@"/%@",#YourFriendId#];


    NSString *hashedAccessToken = [self hmac:accessToken withKey:kAPP_SECRETE];
    NSDictionary *params = @{
                             @"fields" : @"context.fields(mutual_friends)",
                             @"appsecret_proof" : hashedAccessToken,
                             @"access_token" : accessToken
                             };


    /* make the API call */
    [FBRequestConnection startWithGraphPath:myFriendId parameters:params  HTTPMethod:@"GET" completionHandler:^
     (
      FBRequestConnection *connection, id result, NSError *error
      ){//Handle Respons;}];

这是hmac函数(添加#import)

//SHA256 HASHMAC
- (NSString *)hmac:(NSString *)access_token withKey:(NSString *)app_secret
{
    const char *cKey  = [app_secret cStringUsingEncoding:NSASCIIStringEncoding];
    const char *cData = [access_token cStringUsingEncoding:NSASCIIStringEncoding];
    unsigned char cHMAC[CC_SHA256_DIGEST_LENGTH];
    CCHmac(kCCHmacAlgSHA256, cKey, strlen(cKey), cData, strlen(cData), cHMAC);
    NSData *HMACData = [NSData dataWithBytes:cHMAC length:sizeof(cHMAC)];
    const unsigned char *buffer = (const unsigned char *)[HMACData bytes];
    NSMutableString *HMAC = [NSMutableString stringWithCapacity:HMACData.length * 2];
    for (int i = 0; i < HMACData.length; ++i){
        [HMAC appendFormat:@"%02x", buffer[i]];
    }
    return HMAC;
}