Xamarin社交组件无法检索Twitter json流

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

我使用以下内容阅读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   <-- 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);
        });