2011-04-26 9 views
0

FBConnect(バージョン:https://github.com/zoul/facebook-ios-sdk/)で動画をアップロードすると、「不正な署名」エラーが発生します。下記参照。FBVideoUploadリクエストの「不正な署名」

これをデバッグする方法はありますか?

FBConnectを介してビデオをアップロードするための実例がありますか?

何か提案がありがとうございます。

コード:

NSArray *permissions = [NSArray arrayWithObjects:@"publish_stream", @"offline_access",nil]; 
_facebook.forceOldStyleAuth = TRUE; 
[_facebook authorize:APP_ID permissions:permissions delegate:_facebookDelegate]; 

... 

NSString *path = [[NSBundle mainBundle] pathForResource:@"dreamall" ofType:@"m4v" inDirectory:@"/"]; 
NSURL *url = [NSURL fileURLWithPath:path]; 
FBVideoUpload *upload = [[FBVideoUpload alloc] init]; 
upload.accessToken = _facebook.accessToken; 
upload.apiKey = API_KEY; 
upload.appSecret = SECRET; 
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys: 
           @"test", @"title", 
           @"upload testing", @"description", 
           nil]; 
[upload startUploadWithURL:url params:params delegate:self]; 

応答:私にとってFBVideoUploadので、私はここに私のコードを入れて正常に動作します

<error_response xmlns="http://api.facebook.com/1.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://api.facebook.com/1.0/ http://api.facebook.com/1.0/facebook.xsd"> 
    <error_code>104</error_code> 
    <error_msg>Incorrect signature</error_msg> 
    <request_args list="true"> 
    <arg> 
     <key>description</key> 
     <value>upload testing</value> 
    </arg> 
    <arg> 
     <key>v</key> 
     <value>1.0</value> 
    </arg> 
    <arg> 
     <key>api_key</key> 
     <value>...</value> 
    </arg> 
    <arg> 
     <key>method</key> 
     <value>facebook.video.upload</value> 
    </arg> 
    <arg> 
     <key>session_key</key> 
     <value>41ab9717c61b70a34a8e48d4.3-100000419172530</value> 
    </arg> 
    <arg> 
     <key>sig</key> 
     <value>bca612d495400136f1847f2bc6907525</value> 
    </arg> 
    <arg> 
     <key>title</key> 
     <value>test</value> 
    </arg> 
    </request_args> 
</error_response> 
í£|<€_Y†gÊˇ¯ZÓzì&Àle4:∫Ù6V-Fn#vÂΩ'‚¥gƒ˙Y†ˇOáeyœn,≠ˇŒX≤Ÿ˘¡¬6G˛éÊ]÷FùC¯7˘JêÁW˙∫nÂfi${(;∑.L‰¯õßÏAüˆ—6Û{ˆhu|ûfi± •ìn£hfiÇç£÷¥GÃ…˛Ü·B:up 

答えて

0

私のFacebookブックアプリが「デスクトップ」モードに設定されていませんでした。そのため、認証が機能しませんでした。参照:

http://code.google.com/p/facebook-java-api/wiki/DesktopMode

は残念ながら、彼らは、Facebookの開発者サイトからこのオプションを削除し、それは新しいアプリでの作業FBVideoUploadの現在のバージョンを取得することはできませんので。

古いREST APIの代わりに新しいグラフAPIを使用するようにFBVideoUploadを修正しました。下記参照。私はFBVideoUploadの開発者に連絡します。

//static NSString *const kAPIURL = @"http://api-video.facebook.com/restserver.php"; 
static NSString *const kAPIURL = @"https://graph-video.facebook.com/me/videos"; 

... 

/* 
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithDictionary:userParams]; 
[params setObject:@"1.0" forKey:@"v"]; 
[params setObject:@"facebook.video.upload" forKey:@"method"]; 
[params setObject:[self sessionID] forKey:@"session_key"]; 
[params setObject:apiKey forKey:@"api_key"]; 
[params setObject:[self signatureForParams:params] forKey:@"sig"]; 
[params setObject:[NSData dataWithContentsOfURL:movieURL] forKey:[movieURL lastPathComponent]]; 
[[FBRequest getRequestWithParams:params httpMethod:@"POST" delegate:delegate requestURL:kAPIURL] connect]; 
*/ 

NSMutableDictionary *params = [NSMutableDictionary dictionaryWithDictionary:userParams]; 
[params setObject:accessToken forKey:@"access_token"]; 
[params setObject:[NSData dataWithContentsOfURL:movieURL] forKey:[movieURL lastPathComponent]]; 
[FBRequest getRequestWithParams:params httpMethod:@"POST" delegate:delegate requestURL:kAPIURL]; 
1

:Facebookのデリゲートメソッドで

m_Facebook = [[Facebook alloc] init]; 
m_FacebookUploader = [[FBVideoUpload alloc]init]; 
NSArray *permissions = [NSArray arrayWithObjects:@"publish_stream", @"offline_access",nil]; 
m_Facebook.forceOldStyleAuth = YES; 
[m_Facebook authorize:APP_ID permissions:permissions delegate:self]; 

- (void)fbDidLogin 
{ 
    NSURL *movieURL = [NSURL fileURLWithPath:m_MoviePath]; 

    NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys: 
          @"Look at my funny video !", @"title", 
          [@"A message" objectForKey:@"message"], @"description", 
          nil]; 

    [m_FacebookUploader setApiKey:APP_ID]; 
    [m_FacebookUploader setAccessToken:m_Facebook.accessToken]; 
    [m_FacebookUploader setAppSecret:APP_SECRET]; 
    [m_FacebookUploader startUploadWithURL:movieURL params:params delegate:self]; 

} 

私はあなたを手伝ってくれることを願っています!

+0

ありがとうございます。実際、問題は私のFacebookアプリが「デスクトップ」モードに設定されていないことでした。私はこの投稿を更新したはずです。 – Peter

関連する問題