尝试对无法访问的网络进行套接字操作

时间:2014-04-25 06:15:51

标签: c# asp.net

我试图通过Facebook建立登录连接。以下是我的代码:

readonly static string App_ID = "someID";
readonly static string App_Secret = "someCode";
readonly static string scope = "email";
readonly static DataContractJsonSerializer userSerializer
    = new DataContractJsonSerializer(typeof(FacebookUser));

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        string code = Request.QueryString["code"];
        string error_description = Request.QueryString["error_description"];
        string originalReturnUrl = Request.QueryString["ReturnUrl"]; // asp.net logon param
        Uri backHereUri = Request.Url; // modify for dev server
        if (!string.IsNullOrEmpty(code)) // user is authenticated
        {
            FacebookUser me = GetUserDetails(code, backHereUri);
            RedirectUser(me.name, "Facebook user");
        }

    if (!string.IsNullOrEmpty(error_description)) // user propably disallowed
    {
        OnError(error_description);
    }
    //fbLogin.Visible = !User.Identity.IsAuthenticated;
    fbLogin.NavigateUrl = string.Format(
        CultureInfo.InvariantCulture,
        "https://www.facebook.com/dialog/oauth?"
        + "client_id={0}&scope={1}&redirect_uri={2}",
        App_ID,
        scope,
        Uri.EscapeDataString(backHereUri.OriginalString));
}
}



FacebookUser GetUserDetails(string code, Uri backHereUri)
{
    Uri getTokenUri = new Uri(
        string.Format(
        CultureInfo.InvariantCulture,
        "https://graph.facebook.com/oauth/access_token?"
        + "client_id={0}&client_secret={1}&code={2}&redirect_uri={3}",
        App_ID,
        App_Secret,
        Uri.EscapeDataString(code),
        Uri.EscapeDataString(backHereUri.OriginalString))
        );
    using (var wc = new WebClient())
    {
        string token = wc.DownloadString(getTokenUri);
        Uri getMeUri = new Uri(
            string.Format(
            CultureInfo.InvariantCulture,
            "https://graph.facebook.com/me?{0}",
            token)
            );
        using (var ms = new MemoryStream(wc.DownloadData(getMeUri)))
        {
            var me = (FacebookUser)userSerializer.ReadObject(ms);
            return me;
        }
    }
}

我收到错误"尝试对无法访问的网络进行套接字操作173.252.120.6:443 "在这一点上:

  using (var wc = new WebClient())
        {
            string token = wc.DownloadString(getTokenUri);

如何解决此错误?

0 个答案:

没有答案