1

以下を使用して Twitter json を読み取ります。ある uri で機能し、別の uri では機能しません。URI は Twitter API コンソールで動作しますが、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 

[クイック Google 検索でこれが得られましたが、関連性があるかどうかはわかりません: https://dev.twitter.com/discussions/15206]

// UPDATE ***********

この追加情報は役に立ちますか、それとも詳細が必要ですか? その場合、どのような詳細が必要ですか?

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);
        });
4

1 に答える 1

0

この電話をかけるとき、あなたは許可されていないようです。

Xamarin.Social ドキュメントから。

Xamarin.Social は、Xamarin.Auth ライブラリを使用して、Account オブジェクトを取得して保存します。

各サービスは、ユーザーの認証に使用できる Xamarin.Auth.Authenticator オブジェクトを返す GetAuthenticateUI メソッドを公開します。そうすることで、後で使用できるように、認証されたアカウントが自動的に保存されます。

Twitter API コンソールで機能する理由は、呼び出しを行う前に承認しているためです。

アプリで既に承認している場合は、承認に使用するコードを投稿してください。

于 2013-09-12T03:44:22.413 に答える