JSSDKとPhpSDKを介してFacebookグラフAPIを使用しています。すべてが開発環境、本番環境、共有ホスティングで機能していますが、部分的に機能しており、これは非常に厄介です。
まず、Facebookアプリは、devでのテストとprodでのテストでまったく同じです。ドメインを変更したところです。次に、アウトバウンドポート80と443がホスティングプロバイダーで開かれています。
開発:Windows、php 5.3.8、curl 7.21.7製品 :Linux、php 5.3.17、curl 7.24.0
私は私のテストの結果の下でここに提示しています。
開発者
- ユーザーにメッセージを公開する:OK
- ページにメッセージを公開する:OK
- ユーザーに写真を公開する:OK
- ページに写真を公開する:OK
- ユーザーのメッセージを削除します:OK
- ページ内のメッセージを削除します:OK
- ユーザーの写真を削除する:OK
- ページ内の写真を削除:OK
製品
- ユーザーにメッセージを公開する:OK
- ページにメッセージを公開する:OK
- ユーザーに写真を公開する:OK
- ページに写真を公開する:OAuthException:予期しないエラーが発生しました。後でリクエストを再試行してください。
- ユーザーのメッセージを削除します:テストされていません
- ページ内のメッセージを削除します:OAuthException:(#100)無効なパラメーター
- ユーザーの写真を削除します:OAuthException:(#221)写真が表示されません
- ページ内の写真を削除する:テストできません
誰かがこれについての手がかりを持っていますか?何が起こっているのかをデバッグするにはどうすればよいですか(共有ホスティングプロバイダーを使用しています)?
編集
これは、本番のKOであるページに写真を公開するためのコードです。
// I´m using Yii framework with a wrapper around Facebook php sdk
// retreiving the page acces token
$page_at = Yii::app()->facebook->api('/'.$fb_page->page_id.'?fields=access_token');
Yii::app()->facebook->setFileUploadSupport(true);
// model contains the post data from the user. For the message it is a text area
// Yii::app()->params->uploadPath is a global param with path where the image resides.
// Directory separator where created with php´s DIRECTORY_SEPARATOR
$data = array(
"message" => $model->attributes['descricao'],
"source" => "@".Yii::app()->params->uploadPath.$model->image,
"access_token" => $page_at['access_token']);
$result = Yii::app()->facebook->api('/'.$fb_page->page_id.'/photos', "POST", $data);
これは、prodでOKなユーザーに公開するコードです。
Yii::app()->facebook->setFileUploadSupport(true);
$data = array(
"message" => $model->attributes['descricao'],
"source" => "@".Yii::app()->params->uploadPath.$model->image,
);
$result = Yii::app()->facebook->api('/'.$fb_page->page_id.'/photos', "POST", $data);
2つの違いは、ユーザーにaccess_tokenが必要ないことだけです。
編集
削除の問題は、ページアクセストークンを投稿に配置するのではなく、URLに配置することで解決されたようです。削除を機能させるために、開発者の投稿にそれを配置することを余儀なくされたことを覚えているので、奇妙です...
今、私はジリオンの異なる組み合わせの後で同じ振る舞いをしている画像投稿に焦点を合わせています。API呼び出しは、エラーにもかかわらず何かを実行しています。アプリアルバムが存在しない場合は作成されますが、画像はアップロードされません。
このバグに関連している可能性があります:https ://developers.facebook.com/bugs/376442565760536?browse = search_5099ba94055685677909148
編集
cpikoのアドバイスに従って、私はCRLFの潜在的な問題に取り組みました。CURLOPT_CRLFをtrueに設定しました。ここで、次のようになります。OAuthException:このリソースを要求するには、ユーザーアクセストークンが必要です。
編集
フィドラーと少し戦った後、devとprodの間で送信されたfacebookapicurlリクエストを比較できました。まあ....絶対に同じです。私はアイデアがなくなり始めています...