2011-07-28 18 views
0

私はfbアプリケーションを作成しています。 FB.uiメソッドapprequestsを使用して、送信する友人を壁に投稿したい人を選択します。これはこのように見えます。

<div id="fb-root"></div> 
<script src="http://connect.facebook.net/pl_PL/all.js" type="text/javascript"></script> 
<script type="text/javascript" > 
FB.init({ 
    appId: myappID, 
    status: true, // check login status 
    cookie: true, // enable cookies to allow the server to access the session 
    xfbml: true, // parse XFBML 
    channelUrl : 'http://localhost:3435/Content/channel.html' 
}); 

function invite(){ 
FB.ui({ method: 'apprequests', 
     message: 'You should learn more about this awesome game.', 
     data: 'tracking information for the user' 
     }, 
function (response) { 

     if (response && response.request_ids) { 
      len = response.request_ids.length; //# of reqs 
      var i = 0; 

      for (i = 0; i < len; i++) { 
      user_req_id = response.request_ids[i]; 
      FB.api('/me/apprequests/?request_ids=' + toString(user_req_id), 
        function (response) { 
        $.post("http://localhost:3435/Home/PostToWall", 
          { request_ids: response['data'][0]['from']['id'] }, 
          function (data) { alert("Data Loaded: " + data); } 
          ); 
        }); 
     } 
    } else { 
     // alert('Post was not published.'); 
    } 
    }) 
    }; 
</script> 

あなたは私が

にPOSTリクエストをしたいんだ
[HttpPost, CanvasAuthorize(Permissions = "user_about_me,publish_stream,email")] 
public ActionResult PostToWall(string request_ids) 
{ 
    /* Post to Wall Logic */ 
    return View(); 
} 

を見ることができるようにこれはChromeとFirefoxで正常に動作しますが、IEでのアクションは解雇されていません。

私はあなたがテストできる小さなサンプルのjavascriptを用意しました。これが問題のように見えます。

これはFFとChromeでテストされている場合 http://localhost:3435/Home/PostToWall?request_ids=100001968250722が要求されたかのように、アラートはhtmlの期待のアクションを返す
<script type="text/javascript" > 
    function CallPostToWall() { 
    $.post("http://localhost:3435/Home/PostToWall", 
      { request_ids: 100001968250722 }, 
      function (data) { alert("Data Loaded: " + data);} 
     ); 
    }; 
</script> 
<a href='#' onclick='CallPostToWall()'>Test Posting</a> 

一方、IEでは。私は何かを得る:

<html><head><script type="text/javascript"> 
top.location = "http://www.facebook.com/dialog/oauth/?scope=user_about_me,publish_stream,email&state=eyJyIjoiaHR0cDovL2FwcHMuZmFjZWJvb2suY29tL2NoaW5jenlrd3Nvc2llL0hvbWUvUG9zdFRvV2FsbCJ9&client_id=248066421875572&redirect_uri=http://localhost:3435/facebookredirect.axd"; 
</script></head><body></body></html> 

私はこれでかなり失われた。

どのような考えですか?

よろしく、 サイモン

+0

私は自分のコンピュータ上にあるため、私たちはアクセスできません。 –

+0

そのため、テストコードを提供しました。他のサンプルのFacebook-c#-SDKプロジェクトと一緒に使うことができます –

+0

あなたは何を見たいと思いますか? –

答えて

0

おそらく、これはただの回避策です。私は、上の記事のカップルを読んだ後、私が理解できるように、PostToWall定義

[HttpPost] 
public ActionResult PostToWall(string request_ids) 
{ 
    /* Post to Wall Logic */ 
    return View(); 
} 

からCanvasAuthorize(...)attrinbuteを除去することによって、正しいビューを返す/ $の.post()ランニングを得ることができましたこれは、IEが「クロスサイトスクリプティング」のようなアクションを防止することによって引き起こされる可能性があります。

0

最後に! 「http://mysite.com/api/」: は、私はちょうどからURLパラメータを変更しましたので、「同一生成元ポリシー」とだけIEに上げる!: である私の問題を解決しました'/ api /' それが動作します!

あなたのお役に立てれば幸いです!

関連する問題