今日、私はSina WeiboのAPIについて研究をしていますが、今ではWeiboを含むWeiboを公開する機能に写真を掲載しています。セキュリティのために、Sina WeiboのAPIはWeiboアカウントのパスワードでログインする機能を提供するのではなく、OAuth Authorizationを使用します。ユーザーはブラウザを介してSina Webサイトにアクセスしてログインします。ログインした後、ブラウザはプログラムのキーと秘密を返します。
main.xml:
<?xml version = "1.0" encoding = "utf-8"?> <linearlayout xmlns:android = "http://schemas.android.com/apk/res/android" android:orientation = "vertical" android:layout_width = "fill_pultent_ android:layout_width = "fill_parent" android:layout_height = "wrap_content" android:adroid: "@+id/login" android:text = "login"/> <ediText android:id = "@+id/status" android:layout_width = " android:hint = "weibo message" /> <button android:layout_width = "fill_parent" android:layout_height = "wrap_content" android:id = "@+id /send" android: "publish" />> < /linearlayout>
ログインボタン、入力ボックス、およびパブリッシュボタンは、ブラウザによって返されるデータを受信したいために、AndroidManifest.xmlでアクティビティを登録するときに意図フィルターを追加する必要があります。
<?xml version = "1.0" encoding = "utf-8"?> <manifest xmlns:android = "http://schemas.android.com/apk/res/android"パッケージ= " Android:minsdkversion = "7" /> <application android:icon = "@drawable /icon" android:label = "@string /app_name"> <intent-filter> <action android = "android.intent.action.main" /> <category android = "android。 <intent-filter> <action android:name = "android.intent.action.view" /> <category android:name = "android.intent.default" /> <category android:name = "android.intent.category.browsable" /> <data = "sina" android " /> < sina:// weibo-> </intent-filter> </activity> </application> <ouses-permission android:name = "android.permiss.internet"> </outes-permission> </manifest>
Intent-Filterは2つの段落に記述する必要があります。一緒に書くと、開始されません。
簡単にするには、SinaサンプルのOauthConstantクラスをコピーするだけです。
パッケージweibo4android.androidexamples; import weibo4android.weibo; import weibo4android.http.accesstoken; import weibo4android.http.requesttoken;パブリッククラスoauthconstant {private static weibo weibo = null; private static oauthconstantインスタンス= null;プライベートリクエストトークンリクエストトークン。 Private AccessToken AccessToken;プライベートストリングトークン;プライベートストリングトークンセクレット; private oauthconstant(){}; public static同期oauthconstant getInstance(){if(instance == null)instance = new OauthConstant();インスタンスを返す; } public weibo getweibo(){if(weibo == null)weibo = new weibo(); Weiboを返します。 } public AccessToken getAccesStoken(){return AccessToken; } public void setAccesStoken(AccessToken AccessToken){this.accessToken = AccessToken; this.token = AccessToken.getToken(); this.tokensecret = accesstoken.getTokensecret(); } public requestToken getRequestToken(){return requestToken; } public void setRequestToken(requestToken requestToken){this.requestToken = requestToken; } public string gettoken(){return token; } public void setoken(String Token){this.token = token; } public string getTokenSecret(){return tokensecret; } public void setokensecret(String tokensecret){this.tokensecret = tokensecret; }}次は最も重要なメインプログラムです。
パッケージcom.pocketdigi.weibo; java.io.fileをインポートします。 weibo4android.weiboをインポートします。 weibo4android.weiboexceptionをインポートします。 import weibo4android.http.accesstoken; import weibo4android.http.requesttoken; Android.App.Activityをインポートします。 Android.content.intentをインポート; Android.content.sharedPreferencesをインポートします。 Android.content.sharedpreferences.editorをインポートします。 Android.net.uriをインポートします。 Android.os.bundleをインポートします。 Android.view.viewをインポート; Android.view.view.onclicklistenerをインポート; Import android.widget.button; Import android.widget.edittext; Import android.widget.toast;パブリッククラスメインは、アクティビティを最初に作成したときに呼び出されるアクティビティを拡張します。 */ string key = ""、secret = "";ボタンログイン、送信; edittextステータス; @override public void oncreate(bundle savedinstancestate){super.oncreate(savedinstancestate); setContentView(r.layout.main); System.setProperty( "weibo4j.oauth.consumerkey"、 "3997936609"); System.setProperty( "weibo4j.oauth.consumersecret"、 "8bc9e3bfd6ae8e3b2b8bda9079918950"); // SINAアプリケーションに適用されたアプリケーションのキーとシークレットログインを設定します=(ボタン)findViewByID(r.id.login); send =(button)findviewbyid(r.id.send); status =(edittext)findviewbyid(r.id.status); login.setonclickListener(new onclickListener(){@Override public void onclick(View v){// todo auto-enerated method stub login(); // login}}); send.setOnClickListener(new onclickListener(){@Override public void onclick(View v){// todo auto-enerated method stub login(); // login}}); send.setonclicklistener(new onclickListener(){@Override public void onclick(View v){// todo auto-fienated method stub string text = string.valueof(status.getText()); weibo weibo = new weibo(); weibo.settoken(key); try secrectus; //テキストファイルf =新しいファイル( "/sdcard/wallpaper/129567208597069400.jpg"); pressed} catch(weiboexception e){// todo auto-enerated catch block e.printstacktrace()}}); } @Override Protected void onstart(){// todo auto-enerated method stub super.onstart(); //起動時に確認して、Webページから来るかどうかを確認してくださいif(uri!= null){//ブラウザの場合、{requestToken requestToken = oauthConstant.getInstance().getRequestToken(); AccessToken AccessToken = RequestToken.GetAccesToken(URI .GetQueryParameter( "oauth_verifier")); oauthconstant.getInstance()。setAccesStoken(AccessToken); //編集者Sharedata = getsharedPreferences( "weibo"、0).edit()を保存します。 sharedata.putstring( "key"、accesstoken.getToken()); sharedata.putString( "Secret"、AccessToken.getTokenSecret()); sharedata.commit(); key = accessToken.getToken(); secret = accessToken.getTokenSecret(); } catch(weiboexception e){e.printstacktrace(); }} else {//ユーザーがSharedPreferences settings = getSharedPreferences( "weibo"、0)を起動した場合; key = settings.getString( "key"、 ""); secret = settings.getString( "secret"、 ""); } if(key.equals( "")|| secret.equals( "")){toast.maketext(this、 "not not not in not in"、toast.length_long).show();ログイン(); //ブラウザログインにスキップ}} public void login(){weibo weibo = oauthconstant.getInstance()。getWeibo();リクエストトークンリクエストトークン; try {requesttoken = weibo.getoauthRequestToken( "sina:// weibo"); //同様のアプリケーションとの競合を回避するために、URIを自分で変更してくださいuri 2 = uri.parse(requesttoken.getauthenticationurl()+ "&from = xweibo"); oauthconstant.getInstance()。setRequestToken(requestToken); StartActivity(new Intent(Intent.action_view、uri2)); } catch(weiboexception e){e.printstacktrace(); }}}Commons-HTTPClient-3.0.1.jarをインポートする必要があります。画像を送信するときは、エラーが報告されます。もちろん、weibo4android-1.2.0.jarは不可欠です。