我一直在使用facebook c#sdk處理.NET MVC/Azure/SQL Azure/Facebook應用程序。Facebook C#SDK,.NET MVC,將參數傳遞給ActionResults與Facebook應用程序URL
花了一段時間,但我似乎讓它登錄用戶,無法捕獲使用該應用程序所需的相關數據。
沒有進入應用程序,用戶需要經歷3個步驟的過程,一旦用戶進入過程結束,我將一些生成的數據發送到twitter api以發佈推文並生成縮短的url使用Bit.ly api。
然後我給用戶發佈到他們的facebook牆上的選項。我可以通過正確的數據將應用程序發佈到用戶牆上。
我面對的問題是,在最終的id上設置的URL會讓任何人將其點擊到一個局部視圖上,從而在URL上顯示相關數據。
URL看起來像這樣的http://apps.facebook.com/myapp/?id=1 我有兩個公共的ActionResult指數(字符串ID),一個帶有參數(POST)&一個沒有(GET)
`
[Authorize]
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult Index()
{
ViewData["Message"] = "Welcome to The My App Website!";
ViewData["id"] = "null";
try
{
var facebookId = long.Parse(User.Identity.Name);
var user = InMemoryUserStore.Get(facebookId);
var client = new FacebookClient(user.AccessToken);
dynamic me = client.Get("me");
ViewData["accessToken"] = user.AccessToken.ToString();
ViewData["FirstName"] = me.first_name;
ViewData["LastName"] = me.last_name;
ViewData["Email"] = me.email;
ViewData["uid"] = facebookId.ToString();
}
catch (Exception)
{
throw;
}
return View();
}
`
[Authorize]
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Index(string id)
{
ViewData["Message"] = "Welcome to My App!";
ViewData["id"] = id;
try
{
var facebookId = long.Parse(User.Identity.Name);
var user = InMemoryUserStore.Get(facebookId);
var client = new FacebookClient(user.AccessToken);
dynamic me = client.Get("me");
ViewData["accessToken"] = user.AccessToken.ToString();
ViewData["FirstName"] = me.first_name;
ViewData["LastName"] = me.last_name;
ViewData["Email"] = me.email;
ViewData["uid"] = facebookId.ToString();
}
catch (Exception)
{
throw;
}
return View();
}
在使用JQuery我這樣做的索引頁,
'
$(document).ready(function() {
var str = "@ViewBag.id";
if(str != "null" || str != null){
$('#imgLoading').css("display", "inline");
$('#side').css('display', 'none');
$('#contentDiv').html("");
$.get('home/GetUniqueView/?id=' + str, function (data6) {
$('#contentDiv').html(data6);
$('#imgLoading').css("display", "none");
});
}else{
}
});
問題是傳遞參數給的ActionResult從Facebook的帆布
這個Facebook應用程序URL HTTP://apps.facebook.com/myapp/ < <這將是航線/首頁/索引
映射到這樣的事情 HTTP://myapp.cloudapp.net/ < <這將是路徑/首頁/指數
這樣的IM假設http://apps.facebook.com/myapp/?id=1映射到http://myapp.cloudapp.net/?id=1
在我的Global.asax頁我
`
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
}
誰能幫助我或建議將參數傳遞給MVC控制器動作結果與Facebook的畫布網址& facebook c#sdk。
它對我的應用程序來說很重要,能夠根據傳遞的ID將用戶導向到特定的視圖/部分視圖。
我是否以正確的方式開展工作,任何人都可以在我的方法中看到缺陷,並且是他們即將失去或不在做的事情。
問候
帕特里克
好了,如果我將它們發送到http://myapp.cloudapp.net/?id=1 我怎麼才能到用戶返回到Facebook中的任何想法, – Lismore 2012-02-12 22:02:59
至少大部分達林應用,你已經回答了這個問題。 爲了更好的解決方案,我會考慮解決方案稍久一點,我認爲將用戶引導出Facebook並不是那麼糟糕。我會嘗試更多的事情。 謝謝 – Lismore 2012-02-12 22:07:54
我終於解決了它, 這個問題不是你上面討論的,雖然它確實讓我找到了問題所在。 Ajax調用是在同一個域, ' $獲得( '/主頁/ GetUniqueView /?ID =' + STR,功能(DATA6){ $( '#contentDiv')。HTML (data6); $('#imgLoading')。css(「display」,「none」); }); 注相比,1日1 URL時,.NET MVC路線失蹤的第一個正斜槓「/」 Notw它是作爲我預期表現, – Lismore 2012-02-13 03:46:16