C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[13]: tweetSharpのOauth認証について


(過去ログ 124 を表示中)

[トピック内 15 記事 (1 - 15 表示)]  << 0 >>

■73876 / inTopicNo.1)  tweetSharpのOauth認証について
  
□投稿者/ kouma (1回)-(2014/11/12(Wed) 02:16:14)

分類:[C#] 

2014/11/12(Wed) 02:18:31 編集(投稿者)
tweetSharpのOauth認証で、PINコードを取得した後にテキストボックスで認証処理を行おうとすると
「Int32 型の値が大きすぎるか、または小さすぎます。」とのエラーが出ます。

Long型に変換して格納したりと試しましたがやはりダメでした。

解決策を探す過程で下記スレッドに行き着きましたが、具体的な解決策が得られなかったのでこちらで再度質問させていただきます。
No68653http://bbs.wankuma.com/index.cgi?mode=al2&namber=68653&KLOG=117)

以下、認証処理のコードです。

private void button1_Click(object sender, EventArgs e)
        {
            long code = long.Parse(textBox1.Text);
            OAuthAccessToken access = service.GetAccessToken(requestToken, code.ToString());
            service.AuthenticateWith(access.Token, access.TokenSecret);
            File.WriteAllText("./aT.atj", access.Token);     //*.atjはアクセストークンをテキスト形式で保存する一時的処理用ファイル出力
            path = Path.GetDirectoryName("./aT.atj");
            File.WriteAllText("./aTS.atj", access.TokenSecret);     //*.atjはシークレットトークンをテキスト形式で保存する一時的処理用ファイル出力
            path = Path.GetDirectoryName("./aTS.atj");
            textBox1.Clear();
            MessageBox.Show("認証実行完了");
        }

引用返信 編集キー/
■73877 / inTopicNo.2)  Re[1]: tweetSharpのOauth認証について
□投稿者/ Azulean (364回)-(2014/11/12(Wed) 07:27:42)
No73876 (kouma さん) に返信
> tweetSharpのOauth認証で、PINコードを取得した後にテキストボックスで認証処理を行おうとすると
> 「Int32 型の値が大きすぎるか、または小さすぎます。」とのエラーが出ます。
>
> Long型に変換して格納したりと試しましたがやはりダメでした。

一度 int や long に変換するのはなぜでしょうか?


> long code = long.Parse(textBox1.Text);
> OAuthAccessToken access = service.GetAccessToken(requestToken, code.ToString());

この 2 行に着目すると、そもそも string のまま渡せばいいのでは?と思わせるためです。
GetAccessToken に渡っているのは string のようなので。
引用返信 編集キー/
■73880 / inTopicNo.3)  Re[2]: tweetSharpのOauth認証について
□投稿者/ kouma (2回)-(2014/11/12(Wed) 09:33:58)
2014/11/12(Wed) 09:42:25 編集(投稿者)
No73877 (Azulean さん) に返信
> ■No73876 (kouma さん) に返信
>>tweetSharpのOauth認証で、PINコードを取得した後にテキストボックスで認証処理を行おうとすると
>>「Int32 型の値が大きすぎるか、または小さすぎます。」とのエラーが出ます。
>>
>>Long型に変換して格納したりと試しましたがやはりダメでした。
> 
> 一度 int や long に変換するのはなぜでしょうか?
> 
> 
>>            long code = long.Parse(textBox1.Text);
>>            OAuthAccessToken access = service.GetAccessToken(requestToken, code.ToString());
> 
> この 2 行に着目すると、そもそも string のまま渡せばいいのでは?と思わせるためです。
> GetAccessToken に渡っているのは string のようなので。

「Int32 型の値が大きすぎるか、または小さすぎます。」というエラーから、格納する際の値がオーバーしてしまうので、より大きい値を格納できるLong型で格納した後にString型に再度変換しようとしていました。

この考えに至ったのは、textBox1.textのStringをそのまま渡しても、同様のエラーが出たからです。
int型への変換に関しては、こちらでは変換処理のコードを一切書いてないので原因が分かりません。

private void button1_Click(object sender, EventArgs e)
        {
            String code = textBox1.Text;
            OAuthAccessToken access = service.GetAccessToken(requestToken, code);
            service.AuthenticateWith(access.Token, access.TokenSecret);
            File.WriteAllText("./aT.atj", access.Token);     //*.atjはアクセストークンをテキスト形式で保存する一時的処理用ファイル出力
            path = Path.GetDirectoryName("./aT.atj");
            File.WriteAllText("./aTS.atj", access.TokenSecret);     //*.atjはシークレットトークンをテキスト形式で保存する一時的処理用ファイル出力
            path = Path.GetDirectoryName("./aTS.atj");
            textBox1.Clear();
            MessageBox.Show("認証実行完了");
        }

引用返信 編集キー/
■73883 / inTopicNo.4)  Re[3]: tweetSharpのOauth認証について
□投稿者/ ヴァン (4回)-(2014/11/12(Wed) 11:42:20)
No73880 (kouma さん) に返信

こんにちは。

こちらを参考にしてみてください。

http://community.eu.playstation.com/t5/General/TweetSharp%E3%81%AE%E3%83%90%E3%82%B0-OauthAccesToken-UserId-Overflow-Exception/td-p/21234057

引用返信 編集キー/
■73884 / inTopicNo.5)  Re[4]: tweetSharpのOauth認証について
□投稿者/ kouma (4回)-(2014/11/12(Wed) 13:20:23)
No73883 (ヴァン さん) に返信
> ■No73880 (kouma さん) に返信
>
> こんにちは。
>
> こちらを参考にしてみてください。
>
> http://community.eu.playstation.com/t5/General/TweetSharp%E3%81%AE%E3%83%90%E3%82%B0-OauthAccesToken-UserId-Overflow-Exception/td-p/21234057
>

ありがとうございます。TweetSharpの最新アンオフィシャルVerでは不具合が修正されている模様ですが、差し替えてもコードの修正箇所が多いので上記処理を組み込みたいと思います。
どのタイミングで差し込めばいいでしょうか。
引用返信 編集キー/
■73887 / inTopicNo.6)  Re[5]: tweetSharpのOauth認証について
□投稿者/ ヴァン (5回)-(2014/11/12(Wed) 15:07:18)
No73884 (kouma さん) に返信

こんにちは。

http://stackoverflow.com/questions/19829649/tweetsharp-oauthaccestoken-overflowexception

user_id が Int32 じゃ足らないから Int64 にしましょうって事ですよね。

ただし、OAuthAccessToken の UserId の型がどのようになっているかまでは調べていません。

そういったことを含めて、差し替えたほうが良いとは思います。


引用返信 編集キー/
■73888 / inTopicNo.7)  Re[6]: tweetSharpのOauth認証について
□投稿者/ ぽぴ王子 (13回)-(2014/11/12(Wed) 16:10:03)
ぽぴ王子 さんの Web サイト
こんにちは。
私の読解力のせいなのか、ちょっと意味がつかめないところがあったので。

> ありがとうございます。TweetSharpの最新アンオフィシャルVerでは不具合が修正されている
> 模様ですが、差し替えてもコードの修正箇所が多いので上記処理を組み込みたいと思います。
> どのタイミングで差し込めばいいでしょうか。

「上記処理」はTweetSharpのソースファイルの中の話ですよね。
自分のアプリケーションに組み込むようなものではないというのは理解されているでしょうか。

私の読み間違いであればいいのですが、TweetSharpではなくアプリケーションを修正するような
意図に見えたので。

もうひとつ。
「アンオフィシャルVer」とは、こちらのブログ http://c-loft.com/blog/?p=2270 で紹介されている
> なおNuGetに、「TweetSharp-Unofficial」なるパッケージがあり、
の意味だと認識していますが、間違いないでしょうか。

だとすると、NuGetで取得できるファイルを差し替えて、参照先を変更するぐらいで大丈夫では
ないかと思ったのですが、そうでもないでしょうか。
あるいは上記ブログに書かれているようにGitHubから自分でダウンロードしてビルドするという
方法もあるかと思います。ちなみに確認してみましたが、GitHub上のソースは64bit対応が
された状態のようでした。

どちらにしてもTweetSharpを差し替えるなり修正するしかないと思うので、ヴァンさんのおっしゃられている
とおり、差し替えたほうがいいかと思います。
引用返信 編集キー/
■73890 / inTopicNo.8)  Re[7]: tweetSharpのOauth認証について
□投稿者/ kouma (5回)-(2014/11/12(Wed) 18:51:23)
No73888 (ぽぴ王子 さん) に返信
>
> 「上記処理」はTweetSharpのソースファイルの中の話ですよね。
> 自分のアプリケーションに組み込むようなものではないというのは理解されているでしょうか。
>

教えていただいたものを組み込めば解決に至ると安易に考えていたので「理解していなかった」ですね。
皆様おっしゃっていただいた上記の通り、ファイルの差し替えで問題解決をしてみます。

>
> 「アンオフィシャルVer」とは、こちらのブログ http://c-loft.com/blog/?p=2270 で紹介されている
>>なおNuGetに、「TweetSharp-Unofficial」なるパッケージがあり、
> の意味だと認識していますが、間違いないでしょうか。
>

はい、その通りです。正確にはブログの方ではなく、Visual StudioのNuGetパッケージの管理で見つけました。

> だとすると、NuGetで取得できるファイルを差し替えて、参照先を変更するぐらいで大丈夫では
> ないかと思ったのですが、そうでもないでしょうか。

上記ブログの方法を試そうとしたところ、

tweetsharp-master.zipをダウンロードする。
zipファイルを解凍し以下ソリューションファイルを開く。
tweetsharp-master\tweetsharp-master\src\TweetSharp.sln

という行程がありますが、TweetSharp.slnが開けない(Visual Studioが立ち上がらない)状態です。

NuGetパッケージの管理でTweetSharp-Unofficialをインストールしても、その後の行程

後は、TweetSharpを利用したい側のアプリケーションで、
“TweetSharp.dll” “Hammock.ClientProfile.dll” “Newtonsoft.Json.dll”
の3つを参照に追加すれば利用可能である。

で、.dllが見つからずに作業が止まっています。
引用返信 編集キー/
■73893 / inTopicNo.9)  Re[8]: tweetSharpのOauth認証について
□投稿者/ kouma (6回)-(2014/11/13(Thu) 01:00:08)
dllファイルは見つかり、参照の変更まで出来ましたが、

型または名前空間名 'TweetSharp' が見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。

とエラーが出ます。

コードにはusing TweetSharp;としっかり定義しているのですが、どこがおかしいのでしょうか。

又、参照の変更ががしっかりと出来ていないのでしょうか。
引用返信 編集キー/
■73895 / inTopicNo.10)  Re[9]: tweetSharpのOauth認証について
□投稿者/ ヴァン (7回)-(2014/11/13(Thu) 09:44:04)
No73893 (kouma さん) に返信

こんにちは。

> dllファイルは見つかり、参照の変更まで出来ましたが、

これは、

>“TweetSharp.dll” “Hammock.ClientProfile.dll” “Newtonsoft.Json.dll”
>の3つを参照に追加すれば利用可能である。

上記の3つを自分のソリューションに追加したということでしょうか?


手順的には、

1.TweetSharp.sln にて TweetSharp.dll を作成

2.自分のソリューションに3つの dll を追加する

となると思います。


>型または名前空間名 'TweetSharp' が見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。
>
>とエラーが出ます。

このエラーは自分のソリューションですよね?
TweetSharp.sln ではないですよね?



引用返信 編集キー/
■73896 / inTopicNo.11)  Re[10]: tweetSharpのOauth認証について
□投稿者/ kouma (7回)-(2014/11/13(Thu) 10:21:27)
No73895 (ヴァン さん) に返信
>
>>dllファイルは見つかり、参照の変更まで出来ましたが、
>
> これは、
>
> >“TweetSharp.dll” “Hammock.ClientProfile.dll” “Newtonsoft.Json.dll”
> >の3つを参照に追加すれば利用可能である。
>
> 上記の3つを自分のソリューションに追加したということでしょうか?
>

そうですね。
「ソリューションエクスプローラー」→「参照設定」右クリック→「参照の追加(R)」→「参照」タブから自分のソリューションの中にある
上記3つのdllファイルを選択し追加しました。
もしかして、tweetsharp-master.zip内のソリューションを参照するのでしょうか?
>
>
> >型または名前空間名 'TweetSharp' が見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。
> >
> >とエラーが出ます。
>
> このエラーは自分のソリューションですよね?
> TweetSharp.sln ではないですよね?
>

そうです。上記の設定後の自分のソリューション起動時のエラーです。
引用返信 編集キー/
■73901 / inTopicNo.12)  Re[10]: tweetSharpのOauth認証について
□投稿者/ kouma (8回)-(2014/11/13(Thu) 16:15:48)
No73895 (ヴァン さん) に返信
> 手順的には、
>
> 1.TweetSharp.sln にて TweetSharp.dll を作成
>
> 2.自分のソリューションに3つの dll を追加する
>
> となると思います。
>

なんとか作業内容が理解できましたが、生成されたdllファイルはどれを入れれば良いのでしょうか。

\tweetsharp-master\tweetsharp-master\src\TweetSharp\bin\Debugの中に3つのdllファイルが有りますし、
\tweetsharp-master\tweetsharp-master\src\TweetSharp\obj\Debugの中にもTweetSharp.dllがあります。

\tweetsharp-master\tweetsharp-master\src\TweetSharp\bin\Debugの中の3つのdllを試しに参照に追加すると、

ファイルまたはアセンブリ 'TweetSharp, Version=2.0.0.0, Culture=neutral, PublicKeyToken=c148cfba29ed1a4d'、またはその依存関係の 1 つが読み込めませんでした。間違ったフォーマットのプログラムを読み込もうとしました。

というエラーが出ました。
自ソリューションでは、TweetSharpのバージョンは2.3.1で、上記のエラーでは「TweetSharp, Version=2.0.0.0」とあるので、
バージョン違いによるエラーなのでしょうか。
引用返信 編集キー/
■73907 / inTopicNo.13)  Re[11]: tweetSharpのOauth認証について
□投稿者/ Azulean (365回)-(2014/11/13(Thu) 22:38:58)
No73901 (kouma さん) に返信
> \tweetsharp-master\tweetsharp-master\src\TweetSharp\bin\Debugの中に3つのdllファイルが有りますし、
> \tweetsharp-master\tweetsharp-master\src\TweetSharp\obj\Debugの中にもTweetSharp.dllがあります。

C# プロジェクトをビルドすると、obj フォルダに中間成果物が、bin フォルダに最終成果物ができるようになっています。
これはダウンロードされたソースコードだけでなく、kouma さん自身が作ったプロジェクト・ソリューションでも同じような振る舞いになっているはずです。

> ファイルまたはアセンブリ 'TweetSharp, Version=2.0.0.0, Culture=neutral, PublicKeyToken=c148cfba29ed1a4d'、またはその依存関係の 1 つが読み込めませんでした。間違ったフォーマットのプログラムを読み込もうとしました。
>

「間違ったフォーマットのプログラムを読み込もうとしました」、詰まるところ BadImageFormatException は次のケースで発生します。

(1)32bit プロセスなのに 64bit の DLL を読み込もうとした、あるいはその逆に 64bit プロセスなのに 32bit の DLL を読み込もうとした
(2).NET の DLL として読み込もうとした DLL が、.NET ではなくネイティブの DLL だった

ビルどした TweetSharp の DLL がどのプラットフォームを対象にしているのか確認しつつ、kouma さんの組み込み先のプロジェクトのプラットフォームがどうなっているかを確認してみてください。
引用返信 編集キー/
■73908 / inTopicNo.14)  Re[12]: tweetSharpのOauth認証について
□投稿者/ kouma (9回)-(2014/11/13(Thu) 23:52:35)
No73907 (Azulean さん) に返信
>
> C# プロジェクトをビルドすると、obj フォルダに中間成果物が、bin フォルダに最終成果物ができるようになっています。
> これはダウンロードされたソースコードだけでなく、kouma さん自身が作ったプロジェクト・ソリューションでも同じような振る舞いになっているはずです。
>

binフォルダ内のファイルを差し替えれば良いということですね。

>
> (1)32bit プロセスなのに 64bit の DLL を読み込もうとした、あるいはその逆に 64bit プロセスなのに 32bit の DLL を読み込もうとした
> (2).NET の DLL として読み込もうとした DLL が、.NET ではなくネイティブの DLL だった
>
> ビルどした TweetSharp の DLL がどのプラットフォームを対象にしているのか確認しつつ、kouma さんの組み込み先のプロジェクトのプラットフォームがどうなっているかを確認してみてください。

http://msdn.microsoft.com/ja-jp/library/ms185328.aspx
こちらのサイトを参考に、アクティブソリューションプラットフォームを設定しました。
引用返信 編集キー/
■73909 / inTopicNo.15)  Re[13]: tweetSharpのOauth認証について
□投稿者/ kouma (10回)-(2014/11/14(Fri) 00:18:31)
2014/11/14(Fri) 00:19:23 編集(投稿者)

皆様、長いお付き合いをありがとうございました。

結論を述べさせていただくと、無事にプログラムが動作致しました。
若輩者に懇切丁寧に解説していただきありがとうございました。

TweetSharpのUserID32bitの問題は取り上げている所が少なく、ある程度開発に慣れていないと戸惑うことが多かったです。

後続の方に少しでも力添え出来ればと思い、この場をお借りして問題解決の方法を書かせていただきたいと思います。

-------------------------------------------------------------------------------------------------------------

1.https://github.com/danielcrenna/tweetsharpからtweetsharp-master.zipをダウンロードする

2.Visual Studioを起動し、「ファイル(F)」→「開く(O)」「プロジェクト/ソリューション(P)」で、解凍したtweetsharp-master.zip内のsrc\TweetSharp.slnを開く。
(slnをダブルクリックしても、こちらでやった限りだと起動しませんでした)

3.ソリューションエクスプローラーで、TweetSharp以外のプロジェクトをアンロードし、TweetSharp右クリック→ビルドをクリック。

4.HammmockとJson.NETが足りないとエラーが出るので、NuGetでインストール。
(スレッド公開時Ver:Hammmock1.3.1 Json.NET6.0.6)

5.http://msdn.microsoft.com/ja-jp/library/ms185328.aspxこちらを参考にして、アクティブソリューションプラットフォームを設定する。

6.再度、TweetSharp右クリック→ビルドをクリック。\src\TweetSharp\bin\x64の中に、“TweetSharp.dll” “Hammock.ClientProfile.dll” “Newtonsoft.Json.dll”が生成される。
分かりやすいところへコピー

7.自分が制作しているソリューションも、アクティブソリューションプラットフォームを設定する。

8.自分が制作しているソリューションのソリューションエクスプローラーにある参照設定を右クリック→「参照の追加(R)」

9.参照タブから、先ほどコピーした3つのファイルを追加。

-------------------------------------------------------------------------------------------------------------

自分はこの行程で今回の問題の解決へ至りました。

トピック内に「アンオフィシャルVer」というものがありますが、NuGet経由で差し替えても上手く動作しませんでした。
(差し替え方法が間違っていたのかもしれません)

最後に、今回のトピックでお力添えしていただいた皆様にもう一度感謝したいと思います。
ありがとうございました。長文失礼いたしました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -