我在用DotNetOpenAuth获取得GoogleAccessToken之后,在向google Buzz post数据时,总得到500错误或401错误,WebRequest request = consumer.PrepareAuthorizedRequest(new MessageReceivingEndpoint(PostUrl, HttpDeliveryMethods.AuthorizationHeaderRequest | HttpDeliveryMethods.PostRequest), State2.GoogleAccessToken);
request.ContentType = "application/atom+xml";
request.Method = "post";
request.ContentLength = ms.Length;
ms.Seek(0, SeekOrigin.Begin); using (Stream requestStream = request.GetRequestStream())
{
ms.CopyTo(requestStream);
}
request.GetResponse();//这里500错误
究竟要怎么写才对?这个问题搞了快一周了,都没解决。去DotNetOpenAuth论坛问也是没有任何回音,急死了。谁能指点方向?
request.ContentType = "application/atom+xml";
request.Method = "post";
request.ContentLength = ms.Length;
ms.Seek(0, SeekOrigin.Begin); using (Stream requestStream = request.GetRequestStream())
{
ms.CopyTo(requestStream);
}
request.GetResponse();//这里500错误
究竟要怎么写才对?这个问题搞了快一周了,都没解决。去DotNetOpenAuth论坛问也是没有任何回音,急死了。谁能指点方向?
通过DotNetOpenAuth获取得google buzzGoogleAccessTokenif (authResponse != null)
{
switch (authResponse.Status)
{
case AuthenticationStatus.Authenticated:
FetchResponse fetch = authResponse.GetExtension<FetchResponse>();
AuthorizedTokenResponse accessToken = GoogleLogin.GoogleWebConsumer.ProcessUserAuthorization(authResponse);
if (accessToken != null)
{
State2.GoogleAccessToken = accessToken.AccessToken;
string userEmail = null;
if (fetch != null)
{
userEmail = fetch.GetAttributeValue(WellKnownAttributes.Contact.Email);
}
PostBuzzEntry(GoogleLogin.GoogleWebConsumer, State2.GoogleAccessToken, "https://www.googleapis.com/buzz/v1/activities/@me/@self?key=AIzaSyBsVVpEHL7ov6gBB7WfnRASlfzPSKQUIU0", "testtesttest");
Response.Write(State2.GoogleAccessToken);
}
break;
//向google post 数据,总得到500错误private void PostBuzzEntry(ConsumerBase consumer, string accessToken, string PostUrl, string body)
{ const string Atom = "http://www.w3.org/2005/Atom";
XNamespace aw = "http://www.w3.org/2005/Atom";
XNamespace activity = "http://activitystrea.ms/spec/1.0";
XElement entry = new XElement(aw + "entry",
new XAttribute("xmlns", "http://www.w3.org/2005/Atom"),
new XAttribute(XNamespace.Xmlns + "activity", "http://activitystrea.ms/spec/1.0"),
new XElement(activity + "object",
new XElement(activity + "object-type", "http://activitystrea.ms/schema/1.0/note"),
new XElement(XName.Get("content", Atom), new XAttribute("type", "html"), Server.UrlEncode("dfsfds")))); MemoryStream ms = new MemoryStream();
XmlWriterSettings xws = new XmlWriterSettings()
{
Encoding = Encoding.UTF8,
};
XmlWriter xw = XmlWriter.Create(ms, xws);
entry.WriteTo(xw);
//File.WriteAllText(Server.MapPath("post.xml"), entry.ToString());//这里已能按google要求构造出
<entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0">
<activity:object>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<content type="html">Hey, this is my first Buzz Post!</content>
</activity:object>
</entry>这样的xml文件。http://code.google.com/intl/en/apis/buzz/v1/using_rest.html#create-activity
xw.Flush();
WebRequest request = consumer.PrepareAuthorizedRequest(new MessageReceivingEndpoint(PostUrl, HttpDeliveryMethods.AuthorizationHeaderRequest | HttpDeliveryMethods.PostRequest), State2.GoogleAccessToken);
request.ContentType = "application/atom+xml";
request.Method = "post";
request.ContentLength = ms.Length;
ms.Seek(0, SeekOrigin.Begin); using (Stream requestStream = request.GetRequestStream())
{
ms.CopyTo(requestStream);
}
request.GetResponse();
}