2011-07-31 50 views
0

當我通過我的應用程序登錄到Facebook時,一切正常,但我在牆上張貼問題。在Facebook上發貼問題

error =     { 
       message = "Invalid access token signature."; 
       type = OAuthException; 
   }; 
+1

我有同樣的問題。問題在於我的數據庫正在截斷訪問令牌,因爲我有將其存儲的列設置爲VARCHAR(100)。事實證明,對於某些訪問令牌來說,100個字符是不夠的,因此發送的訪問令牌無效。 –

+0

您如何獲取訪問令牌的值? – jBit

+0

您需要在Facebook上註冊才能獲得Oauth密鑰,然後用戶需要批准該應用程序才能使用該應用程序。 –

回答

0

您必須使用用戶的access_token發佈信息到他們的牆上:

- (NSString *) postToFBWallStatus:(NSString *) status andSetDelegate: (id) delegate 
{ 
    if (! isFBLoggedIn) 
    { 
     return @"NotLoggedin"; 
    } 

    NSString *message = status; 
    NSLog(@"Appdelegate: postToFBWallStatus:andSetDelegate:"); 
    NSLog(@"to be delegate class: %@",[delegate class]); 

    NSURL *url = [NSURL URLWithString:@"https://graph.facebook.com/me/feed"]; 

    ASIFormDataRequest *newRequest = [ASIFormDataRequest requestWithURL:url]; 
    [newRequest setPostValue:message forKey:@"message"]; 
    [newRequest setPostValue:@"" forKey:@"name"]; 
    [newRequest setPostValue:@"" forKey:@"caption"]; 
    [newRequest setPostValue:@"" forKey:@"description"]; 
    [newRequest setPostValue:@"" forKey:@"link"]; 
    [newRequest setPostValue:@"" forKey:@"picture"]; 
    [newRequest setPostValue:_accessToken forKey:@"access_token"]; 
    [newRequest setDidFinishSelector:@selector(postToWallFinished:)]; 
    [newRequest setDidFailSelector:@selector(postToWallFailed:)]; 
    [newRequest setDelegate:delegate]; 
    [newRequest startAsynchronous]; 

    return @"Loggedin"; 
} 

當我發佈到Facebook塗鴉牆我得到這個消息。此外,用戶需要允許API調用的publish_stream權限工作。在對用戶進行身份驗證時,將publish_stream添加到權限範圍。