私はこの一見些細な問題に 3 日間取り組んでおり、コードが機能しない理由を完全に使い果たしました。
簡単に言えば、ユーザーが facebook リクエストを受信してクリックすると、招待を処理する必要があります。
FB.Event.subscribe('auth.authResponseChange', function (response) {
if (response.status === 'connected') {
if (window.location.href.indexOf('app_invite') !== -1 || window.location.href.indexOf('app_request') !== -1) {
var inviteeID = response.authResponse.userID;
processIncomingInvitation(inviteeID);
}
});
問題は、次の関数で発生します。リクエストが成功$.post()
すると、単純なリダイレクトが期待されます。
$.post(url, function (result) {
window.location.replace('/True?fbapp=fbapp');
});
しかし、リダイレクトは無視され、その理由がわかりません。代わりにを入れても、alert('hello');
そのコードのビットにヒットしていることがはっきりとわかります。代わりにリダイレクトが無視されるのはなぜですか?
function processIncomingInvitation(inviteeID) {
var urlParams = {};
(function () {
var match,
pl = /\+/g, // Regex for replacing addition symbol with a space
search = /([^&=]+)=?([^&]*)/g,
decode = function (s) {
return decodeURIComponent(s.replace(pl, " "));
},
query = window.location.search.substring(1);
while (match = search.exec(query)) {
urlParams[decode(match[1])] = decode(match[2]);
}
})();
var requestType = urlParams.app_request_type;
if (requestType === "user_to_user") {
var reqIDlist = urlParams.request_ids.split(',');
var requestID = reqIDlist[0];
FB.api(requestID, function (response) {
if (response.from !== undefined && response.from !== 'undefined') {
var inviterID = response.from.id;
var inviterName = response.from.name.split(" ")[0];
var url = '/friend/' + inviteeID + '/accept/' + inviterID + '/?fbapp=fbapp';
$.post(url, function (result) {
window.location.replace('/True?fbapp=fbapp');
});
deleteRequest(requestID);
}
});
}
}