Facebook Canvas Redirect
本文关键字:Redirect Canvas Facebook | 更新日期: 2023-09-27 18:14:10
我正在使用Facebook c# SDK v5.3.2来构建Facebook画布应用程序。我没有使用任何客户端身份验证,我都是在服务器端进行的。我使用ASP创建了一个应用程序。. NET MVC 3和我的画布页面驻留在www.mydomain.com/FacebookCanvas/。一旦用户通过了身份验证,应用程序就可以正常工作。但是,在用户第一次使用它进行身份验证时出现了一个问题。在确认身份验证后,将用户重定向到正确的url存在问题。这是事件的顺序……
- 用户请求url https://apps.facebook.com/myapp
- 用户接受认证对话框
- 用户被重定向到url https://apps.facebook.com/myapp/FacebookCanvas/
- 一旦用户删除了第二个myapp,那么一切就都完美了。
这些是我的网页设置。配置文件…
<facebookSettings
appId="{app id}"
appSecret="{app secret}"
canvasPage="https://apps.facebook.com/myapp/"
canvasUrl="http://www.mydomain.com/FacebookCanvas"
secureCanvasUrl="https://www.mydomain.com/FacebookCanvas" />
<configSections>
<section type="Facebook.FacebookConfigurationSection, Facebook" name="facebookSettings" allowLocation="true" allowDefinition="Everywhere" />
</configSections>
<system.web>
<httpHandlers>
<add verb="*" path="facebookredirect.axd" type="Facebook.Web.FacebookAppRedirectHttpHandler, Facebook.Web" />
</httpHandlers>
</system.web>
<system.webServer>
<handlers>
<add name="facebookredirect" path="facebookredirect.axd" verb="*" type="Facebook.Web.FacebookAppRedirectHttpHandler, Facebook.Web" />
</handlers>
</system.webServer>
我的Facebook应用设置如下
- 应用显示名称:MyNewApp
- 应用命名空间:myapp
- 网站网址:http://www.mydomain.com/
- 画布URL: http://www.mydomain.com/FacebookCanvas/
- 安全画布URL: https://www.mydomain.com/FacebookCanvas/
- Canvas Page: https:apps.facebook.com/myapp
Thanks in advance
我首先调用:
public virtual ActionResult GetAccessToken()
{
var redirect_uri = GetFacebookCallbackUrl();
var strUrl = "https://www.facebook.com/dialog/oauth?client_id=" + Server.UrlEncode(Facebook.FacebookApplication.Current.AppId) +
"&redirect_uri=" + Server.UrlEncode(redirect_uri) + "&scope=user_about_me";
ViewBag.RedirectUrl = strUrl;
return View(MVC.Home.Views.FBRedirect);
}
在fb回叫中:
public virtual ActionResult FbCallback()
{
var code = Request.QueryString["code"];
if (!string.IsNullOrEmpty(code))
{
string query = "client_id=" + Facebook.FacebookApplication.Current.AppId + "&client_secret=" +
Facebook.FacebookApplication.Current.AppSecret + "&redirect_uri=" + Server.UrlEncode(GetFacebookCallbackUrl()) +
"&code=" + code;
var response = WebRequestHelper.GetWebRequest("https://graph.facebook.com/oauth/access_token?" + query);
//Process response here.
}
else
{
var errorReason = Request.QueryString["error_reason"];
var error = Request.QueryString["error"];
ContentResult res = new ContentResult();
res.Content = "code query string does not present. reason: " + errorReason;
res.ContentType = "text/plain";
return res;
}
}
希望能有所帮助