私は次のようにFB.ui()を使用しています:
<script>
window.fbAsyncInit = function() {
FB.init({
appId : '##########', // App ID
channelUrl : '//www.xxxxxxxxxx.com/channel.php', // Channel File
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true // parse XFBML
});
// Additional initialization code here
};
// Load the SDK Asynchronously
(function(d){
var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
if (d.getElementById(id)) {return;}
js = d.createElement('script'); js.id = id; js.async = true;
js.src = "//connect.facebook.net/en_US/all.js";
ref.parentNode.insertBefore(js, ref);
}(document));
</script>
次に、メッセージを送信するためのリンクは次のとおりです。
<a href='#' onClick="
FB.ui({
method: 'send',
name: 'Bla bla bla',
link: 'http://www.xxxxxxxxxxx.com',
to: ###########,
//redirect_uri: 'http://www.xxxxxxxxxxx.com/fb/'
});
">Send a message</a>
問題: これは、私と私がテストしたすべてのコンピューター/ブラウザーにとって魅力のように機能します。しかし、私のクライアントは次のエラーメッセージを頻繁に受け取ります。
API Error Code: 191
API Error Description: The specified URL is not owned by the application
Error Message: redirect_uri is not owned by the application
これは私を完全に困惑させました!私のコードに何か問題がありますか?もしそうなら、クライアントが複数のコンピューター/ブラウザーで一貫して実行できるのに、なぜこのバグを再現できないのですか?
PS:自分で試してみたい場合は、ページがここにあります。アプリを承認する必要がありますが、不気味なことは何も起こらないと約束します。
編集:エラーは、redirect_uri
私のコードでコメントアウトされていることに気付くでしょう。その理由は、そのパラメーターを含めると、「閉じる」を押してもダイアログが閉じないためです。
EDIT2:友人のコンピューターでこのバグを再現することができ、CBroeもそれを確認しました。それで、(なぜ私がまだそれを自分で作ることができないのかという謎は別として)、私が最も困惑しているのは、なぜこれが半分の時間しか起こらないのかということです。私のコードが正しくない場合、それは決して機能しないはずですよね??
エラーメッセージのURLは次のとおりです。
https://www.facebook.com/dialog/send?display=popup&link=http%3A%2F%2Fwww.streetofwalls.com&locale=en_US&name=Career%20Networking%20powered%20by%20Street%20of%20Walls&next=http%3A%2F%2Fstatic.ak.facebook.com%2Fconnect%2Fxd_arbiter.php%3Fversion%3D8%23cb%3Df2c657ef78%26origin%3Dhttp%253A%252F%252Fwww.streetofwalls.com%252Ff3575a615c%26domain%3Dwww.streetofwalls.com%26relation%3Dopener%26frame%3Df1ca46b43c%26result%3D%2522xxRESULTTOKENxx%2522&sdk=joey&show_error=true&to=573501273
url_decode()
バージョン後:
https://www.facebook.com/dialog/send?display=popup&link=http://www.streetofwalls.com&locale=en_US&name=Career Networking powered by Street of Walls&next=http://static.ak.facebook.com/connect/xd_arbiter.php?version=8#cb=f2c657ef78&origin=http%3A%2F%2Fwww.streetofwalls.com%2Ff3575a615c&domain=www.streetofwalls.com&relation=opener&frame=f1ca46b43c&result=%22xxRESULTTOKENxx%22&sdk=joey&show_error=true&to=573501273
EDIT3:
このパズルの一部が解決されました。エラーが発生するのは、FB.init()
動作しなかった結果です。をラップしFB.ui()
たFB.getLoginStatus(function(response){ \\... }
ので、コンソールでより便利なエラーを確認できます。未解決の質問は...なぜFB.init()がそれほど頻繁に失敗するのですか?