0

過去数日間、私はこの問題に苦しんでいます。現時点では、単純な C# コンソール アプリを用意しています。最終的には、Twitter でサインインするためにモバイル アプリで再利用する小さなライブラリを作成したいと考えていますが、それは後で問題になります。現時点では、理論的には Twitter にサインインできるはずの次のコードがあります。

var auth = new XAuthAuthorizer()
                       {
                          Credentials = new XAuthCredentials()
                                             {
                                                 UserName = "username",
                                                 Password = "supersecretpassword",
                                                 ConsumerKey = "2131341234Q123123",
                                                 ConsumerSecret = "671723458671253481234"
                                             }
                       };

        auth.Authorize();

        using (var twitterCtx = new TwitterContext(auth))
        {
            //Log
            twitterCtx.Log = Console.Out;

            var users =
                (from tweet in twitterCtx.User
                 where tweet.Type == UserType.Search &&
                       tweet.ScreenName == ""
                 select tweet)
                .ToList();

            users.ForEach(user =>
            {
                var status =
                    user.Protected || user.Status == null ?
                        "Status Unavailable" :
                        user.Status.Text;

                Console.WriteLine(
                    "ID: {0}, Name: {1}\nLast Tweet: {2}\n",
                    user.Identifier.UserID, user.Identifier.ScreenName, status);
            });

Twitter に XAuth アクセス要求をまだ送信していません。( https://dev.twitter.com/docs/oauth/xauth ) 結局、これはどのように行われるかを確認するためのテスト アプリです。

私の質問はこれです。ユーザーが Twitter のユーザー名とパスワードを入力し、 Xauth を使用せずにサインインできるようにすることはできますか? 可能であればどうすればよいですか...それはより良い解決策ですか? linq2twitter を使用してこれを行う方法の例を教えていただければ、とても助かります。私は初心者の開発者であり、どこでも壁にぶつかっています... また、ここで指定されたコードは、Twitter から Xauth アクセスを取得した場合に機能しますか?

よろしくお願いします。私は本当に立ち往生しており、Googleは今では私を嫌い始めています...

編集...

このリンクを見つけました https://dev.twitter.com/docs/auth/implementing-sign-twitter しかし、401 Unauthorized return を受け取りました... 理由がわかりません。何か問題を見つけたらお知らせください。コールバック URL だと思いますが、少しわかりません

string oauth_signature_method = "HMAC-SHA1";
        TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
        string oauth_timestamp = Convert.ToInt64(ts.TotalSeconds).ToString();

        string oauth_version = "1.0";
        string oauth_consumer_key = "123123412341235";
        string oauth_nonce = Convert.ToBase64String(new ASCIIEncoding().GetBytes(DateTime.Now.Ticks.ToString()));

        SortedDictionary<string, string> sd = new SortedDictionary<string, string>();

        sd.Add("oauth_version", oauth_version);
        sd.Add("oauth_consumer_key", oauth_consumer_key);
        sd.Add("oauth_nonce", oauth_nonce);
        sd.Add("oauth_signature_method", oauth_signature_method);
        sd.Add("oauth_timestamp", oauth_timestamp);
        UrlEntity callback = new UrlEntity();
        callback.Url = @"http://127.0.0.1";
        string encodedCallbackUrl = HttpUtility.UrlEncode(callback.Url);
        sd.Add("oauth_callback",encodedCallbackUrl);

        WebClient wc = new WebClient();
        wc.Headers.Add("User-Agent: randomAgent HTTP Client");
        wc.Headers.Add("Host: api.twitter.com");
        wc.Headers.Add(@"Accept: */*");
        UrlEntity url = new UrlEntity();
        url.Url = @"https://api.twitter.com/oauth/request_token";
        string signature = CreateSignature(url, sd);
        sd.Add("oauth_signature",signature);
        string dataValues = "";
        foreach (KeyValuePair<string, string> pair in sd)
        {
            dataValues += pair.Key + "='" + pair.Value + "',";
        }
        dataValues = dataValues.Substring(0, dataValues.Length - 1); // cuts off the last,
        string headerVal = " Oauth " + dataValues;
        wc.Headers.Add("Authorization",headerVal);
        wc.UploadString(@"https://api.twitter.com/oauth/request_token", "");
        wc.DownloadStringCompleted += WcOnDownloadStringCompleted;

コールバック URL に何を使用すればよいかまだわかりません。

4

1 に答える 1

1

これは不可能です。Twitter でのアクセスにライブラリ (dll...) を使用しており、Twitter では oAuth なしで承認されることは許可されていません (少なくとも他の方法は知りません)。

そして、TwitterDevで作成するアプリケーションは非常に重要です;D. 私はあなたが今持っているのと同じエラーを持っていますが、私は思う!. TwitterDev で次のコードを試してください。

1 -Access level       Read, write, and direct messages 
2 -Consumer key       your_consumer_key
3 -Consumer secret    your_very_large_consumer_secret_key
4 -Request token URL  https://api.twitter.com/oauth/request_token
5 -Authorize URL      https://api.twitter.com/oauth/authorize
6 -Access token URL   https://api.twitter.com/oauth/access_token
7 -Callback URL       https://api.twitter.com/oauth/authorize
Sign in with Twitter    Yes 

私のエラーは4、5、6、7行目にあります...さらに

于 2013-11-01T13:30:36.253 に答える