我正在尝试添加从我正在开发的网站发布到用户墙上的功能。
我已经使用 Microsoft C# Facebook SDK 编写了一些代码。它检查当前用户是否通过身份验证,如果没有,则重定向到 OAuth 页面。如果用户通过身份验证,它会尝试发布到他们的墙上:
CanvasAuthorizer auth = new CanvasAuthorizer();
bool authorized = auth.FacebookWebRequest.IsAuthorized(new string[] { "publish_stream" });
if (authorized)
{
FacebookClient client = new FacebookClient();
client.AccessToken = auth.FacebookWebRequest.AccessToken;
Dictionary<string, object> args = new Dictionary<string, object>();
args["message"] = "This is a test.";
args["name"] = "";
args["link"] = "http://subdomain.domain.lom/";
args["description"] = "Development site.";
client.Post("/me/feed", args);
}
else
{
long appId = {APP_ID};
string returnUrl = "http://subdomain.domain.com/share";
Response.Redirect("https://www.facebook.com/dialog/oauth?client_id=" + appId.ToString() + "&redirect_uri=" + returnUrl + "&scope=publish_stream");
}
第一次加载时,它发现您未通过身份验证并将您重定向到 Facebook 授权页面。
但是,当它试图返回我的站点时,它会进入重定向循环。
看起来发生的事情是,当它从 Facebook 返回时,它会进行身份验证检查,但它说用户未经过身份验证。这然后再次重定向到 Facebook 登录,它知道用户已通过身份验证,因此返回到我的站点,导致循环。
我现在正在我的本地机器上开发,http://subdomain.domain.lom/ ,这是无法从外部世界访问的。
我的 Facebook 应用程序设置是:
- 应用域:domain.lom
- 网站网址:http://subdomain.domain.lom/
我的印象是,如果您在本地工作并不重要?
最佳答案
沙盒模式
我建议创建第二个 Facebook 应用程序(根据 Facebook 应用程序 ID),以便在沙盒模式下进行开发和测试。
通过测试应用程序,您可以对有限数量的用户使用不同设置的相同代码(非常有用)。
以下是一些链接:
- Application Security来自 Facebook 文档。
- How do you limit a Facebook app to a small number of people during testing?来自 stackoverflow.com。
可能的错误
尝试对 returnUrl
值进行编码。
它不会工作,你必须调试它:(。我的第一个客人是 Facebook 授权你使用另一个域。
关于c# - 从本地开发站点使用 Facebook 进行身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9280463/