Xamarin社交组件无法检索Twitter json流
我使用以下内容阅读Twitter json。它使用一个uri,而不是另一个uri。uri与TwitterAPI控制台一起工作,但与Xamarin.Social无关。我拥有Twitter应用程序的读写权限,所以我看不出哪里出了问题Xamarin社交组件无法检索Twitter json流,json,twitter,twitter-oauth,xamarin,social,Json,Twitter,Twitter Oauth,Xamarin,Social,我使用以下内容阅读Twitter json。它使用一个uri,而不是另一个uri。uri与TwitterAPI控制台一起工作,但与Xamarin.Social无关。我拥有Twitter应用程序的读写权限,所以我看不出哪里出了问题 https://api.twitter.com/1.1/account/settings.json <-- works https://api.twitter.com/1.1/users/show.json?screen_name=AUserName &l
https://api.twitter.com/1.1/account/settings.json <-- works
https://api.twitter.com/1.1/users/show.json?screen_name=AUserName <-- fails (see error below)
request.GetResponseAsync ().ContinueWith (response => {
if (response.IsFaulted)
{
Console.WriteLine (response.Exception.Flatten ());
}
var json = response.Result.GetResponseText ();
System.AggregateException: One or more errors occured ---> System.Net.WebException: The remote server returned an error: (401) Unauthorized.
at System.Net.HttpWebRequest.CheckFinalStatus (System.Net.WebAsyncResult result) [0x0030c] in /Developer/MonoTouch/Source/mono/mcs/class/System/System.Net/HttpWebRequest.cs:1606
at System.Net.HttpWebRequest.SetResponseData (System.Net.WebConnectionData data) [0x00141] in /Developer/MonoTouch/Source/mono/mcs/class/System/System.Net/HttpWebRequest.cs:1423
--- End of inner exception stack trace ---
--> (Inner exception 0) System.Net.WebException: The remote server returned an error: (401) Unauthorized.
at System.Net.HttpWebRequest.CheckFinalStatus (System.Net.WebAsyncResult result) [0x0030c] in /Developer/MonoTouch/Source/mono/mcs/class/System/System.Net/HttpWebRequest.cs:1606
at System.Net.HttpWebRequest.SetResponseData (System.Net.WebConnectionData data) [0x00141] in /Developer/MonoTouch/Source/mono/mcs/class/System/System.Net/HttpWebRequest.cs:1423
这个额外的信息对你有帮助还是你需要更多的细节?如果是,那么需要什么细节
public Account Account
{
get
{
var task = Service.GetAccountsAsync ()
.ContinueWith (accounts =>
{
return accounts.Result.ToList ().FirstOrDefault ();
});
return task.Result;
}
set
{
AccountStore.Create ().Save (value, SocialPlatform.ToString ());
}
}
// later on
// when endpoint = "https://api.twitter.com/1.1/account/settings.json" <-- works, json returned
// when endpoint = "https://api.twitter.com/1.1/users/show.json?screen_name=XXXX" <-- IsFaulted with above error,
var request = Service.CreateRequest ("GET", endpoint, Account);
request.GetResponseAsync ().ContinueWith (response => {
if (response.IsFaulted)
{
Console.WriteLine (response.Exception.Flatten ());
return;
}
var json = response.Result.GetResponseText ();
Console.WriteLine (json);
});
公共帐户
{
得到
{
var task=Service.GetAccountsAsync()
.ContinueWith(帐户=>
{
return accounts.Result.ToList().FirstOrDefault();
});
返回任务。结果;
}
设置
{
AccountStore.Create().Save(value,SocialPlatform.ToString());
}
}
//后来
//当端点=”https://api.twitter.com/1.1/account/settings.json“您拨打此电话时似乎未经授权
来自Xamarin.社会文献
Social使用Xamarin.Auth库获取和存储
帐户对象
每个服务公开一个GetAuthenticateUI方法,该方法返回
可用于验证的Xamarin.Auth.Authenticator对象
用户。这样做将自动存储经过身份验证的帐户
以后可以用
它在TwitterAPI控制台中工作的原因是您在进行调用之前已经在那里进行了授权
如果您已经在应用程序中授权,请发布您用于授权的代码 我添加了更多的代码,但它成功地调用了一个url,而不是另一个…奇怪吗?
public Account Account
{
get
{
var task = Service.GetAccountsAsync ()
.ContinueWith (accounts =>
{
return accounts.Result.ToList ().FirstOrDefault ();
});
return task.Result;
}
set
{
AccountStore.Create ().Save (value, SocialPlatform.ToString ());
}
}
// later on
// when endpoint = "https://api.twitter.com/1.1/account/settings.json" <-- works, json returned
// when endpoint = "https://api.twitter.com/1.1/users/show.json?screen_name=XXXX" <-- IsFaulted with above error,
var request = Service.CreateRequest ("GET", endpoint, Account);
request.GetResponseAsync ().ContinueWith (response => {
if (response.IsFaulted)
{
Console.WriteLine (response.Exception.Flatten ());
return;
}
var json = response.Result.GetResponseText ();
Console.WriteLine (json);
});