2011-03-18 28 views
1

我正在使用該工具包的內部版本5.06,我剛開始,試圖做一些簡單的事情:獲取回傳工作。但是,當用戶點擊回發按鈕時,瀏覽器會很快被重定向到某些東西(我認爲它是uiserver。???),然後再次重定向到facebookredirect.axd,最後再次轉到我的主頁畫布頁面。所以,整個會話都會重置。我希望有一些顯而易見的東西丟失(比如我不應該在回發中調用授權)。這是我的代碼:ASP.NET4畫布應用程序:回發導致意外的重定向

using System; using System.Configuration; using System.Web.UI;使用Facebook的 ; 使用Facebook.Web;

公共部分類_Default:頁 {

/// <summary> 
/// Gets the current canvas facebook session. 
/// </summary> 
public FacebookSession CurrentSession 
{ 
    get { return (new CanvasAuthorizer()).Session; } 
} 

protected void Page_Load(object sender, EventArgs e) 
{ 

    var auth = new CanvasAuthorizer { Permissions = new[] { "user_about_me" } }; 

    if (auth.Authorize()) 
    { 
     ShowFacebookContent(); 
    } 
} 

private void ShowFacebookContent() 
{ 
    var fb = new FacebookClient(this.CurrentSession.AccessToken); 
    dynamic myInfo = fb.Get("me"); 
    lblName.Text = myInfo.name; 
    lblName.Text += myInfo.gender; 
    pnlHello.Visible = true; 
} 


protected void TempSaveButton_Click(object sender, EventArgs e) 
{ 
    var auth = new CanvasAuthorizer { Permissions = new[] { "user_about_me" } }; 
    if (auth.Authorize()) 

    { 
     var fb = new FacebookClient(this.CurrentSession.AccessToken); 
     dynamic myInfo = fb.Get("me"); 
     lblDisplayText.Text = "Was authorized! name is" + myInfo.name; 
    } 
    else 
    { 
     lblDisplayText.Text = "Was not authorized!"; 
    } 
} 

}

<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" 
CodeFile="Default.aspx.cs" Inherits="_Default" %> 
<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent"> 


</asp:Content> 
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent"> 


<asp:Label runat="server" ID="a" /> 
<asp:Panel ID="pnlHello" runat="server" Visible="false"> </asp:Panel> 
    <h2> 
     Hello 
     <asp:Label ID="lblName" runat="server" />! 
     </h2> 
     <div>Hello ! Please press button to do postback. 

<asp:Button ID="TempSaveButton" Text="Temp Save" runat="server" onclick="TempSaveButton_Click"></asp:button> 



<asp:Panel ID="pnlError" runat="server" Visible="false"> 
    <a href="Default.aspx"> 
     <asp:Label ID="lblDisplayText" runat="server" ForeColor="Red" /><br /> 
    </a> 
</asp:Panel> 

(在上面,標籤沒有得到根本的回傳後置

感謝您的任何幫助...

Ben

+0

您第一次運行應用程序時是否獲得了Facebook權限對話框? – JCPhlux 2011-03-19 05:32:50

+0

嗨JCPhlux,是的,它確實提示我第​​一次根據請求的權限授權應用程序。 – BenjiFB 2011-03-20 22:33:27

回答

1

您將需要手動維護signed_request用於回發和ajax請求。

嘗試創建一個隱藏的輸入字段,其中包含signed_request。

<input type="hidden" name="signed_request" value="<%: Request.Params["signed_request"]%>"/> 

命名隱藏字段signed_request。所以當你輸入下面的代碼時,access_token會自動設置。

var fb = new FacebookWebClient(); 

對於mvc,有一個輔助方法。

@Html.FacebookSignedRequest() 
+0

嗨Prabir,我做了修改,它看起來像字段現在在呈現的iframe的源中正確顯示,但我得到相同的行爲。我在想,也許我不應該在回發方法中創建授權者並調用授權。你能澄清嗎? – BenjiFB 2011-03-20 22:34:35

相關問題