GoogleConnect.Fetch抛出无法转换对象错误

时间:2017-03-24 06:22:52

标签: c# google-api

我正在将Google API集成到我的项目中。我使用以下代码来执行此操作:

public void google()
    {

        GoogleConnect.ClientId = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
        GoogleConnect.ClientSecret = "xxxxxxxxxxxxxxxxxxxxxxxxxxxx";
        GoogleConnect.RedirectUri = Request.Url.AbsoluteUri.Split('?')[0];

        if (!string.IsNullOrEmpty(Request.QueryString["code"]))
        {
            string code = Request.QueryString["code"].ToString();
            string json = GoogleConnect.Fetch("me", code.ToString());
            GoogleProfile profile = new JavaScriptSerializer().Deserialize<GoogleProfile>(json);
            //code for showing data on my page
        }
        if (Request.QueryString["error"] == "access_denied")
        {
            ClientScript.RegisterClientScriptBlock(this.GetType(), "alert", "alert('Access denied.')", true);
        }

    }
    public class GoogleProfile
    {
        public string Id { get; set; }
        public string DisplayName { get; set; }
        public Image Image { get; set; }
        public List<Email> Emails { get; set; }
        public string Gender { get; set; }
        public string ObjectType { get; set; }
    }

    public class Email
    {
        public string Value { get; set; }
        public string Type { get; set; }
    }

    public class Image
    {
        public string Url { get; set; }
    }

当我点击谷歌按钮并在第一个实例上显示数据时它会运行但是第二次尝试它时会抛出以下错误。

  '/'应用程序中的服务器错误。无法转换类型的对象   'System.String'键入'?1?'。

我在同一个屏幕上也有一个facebook和twitter按钮,但我怀疑它是否导致问题。任何建议都会有所帮助。

1 个答案:

答案 0 :(得分:3)

我已经使用过这个api你应该用它放一个清晰的按钮来显示个人资料 创建按钮清除

 protected void Clear(object sender, EventArgs e)
    {
        GoogleConnect.Clear();
    }