Cocos2d-xとTwitter Kitを使ってOAuth認証&ユーザタイムライン取得-Android編その1
ツイートを使ったゲームをCocos2d-xで作りたかったので、Twitter Kit(Fabric)を使って、ツイッターのユーザタイムラインの取得をやってみました。
事前にAndroidネイティブでTwitterにログインするところまでやっておくと分かりやすいと思います。
ここで登録をして、https://get.fabric.io/
ここを見てください。Fabricの導入(Twitter SDK)
出来ましたでしょうか。
こんなかんじにツールバーに追加されていて、ログインできていれば成功です。
Checking...がUnknownになるのを待ってから、TwitterのUnknownをクリック。
一番下のLog in with Twitterをselect
AndroidManifestに関しては、指示通りにコードを追加してください。
次のStartActivityはAppActivityに書きます。
onCreateメソッドが無いので、そこは丸々コピペしますが、setContentViewの行は使わないので消します。
Bundleをimportしたりして、最終的にはこんなかんじになります。
アラートが沢山出ますが、導入が終わると消えるので気にしないでください。
次のkits.propertiesは無視。
その次のView.xmlも無視。
その次のView ClassはAppActivityに記述しますが、内容を変えます。
Cocos2d-xでAndroidのUIを使うことは出来ないので、TwitterLoginButtonをperformClickでプログラムからクリックさせます。
importの部分はそのままコピペします。
次のonCreateの中身は、代わりに
すると左側のProjectExplorerにファイルがいくつか追加されて、Twitter Kitが導入されます。
先ほどまでたくさん出ていたアラートが消えていたら成功です。
長くなってきたので、続きはまた。
続きCocos2d-xとTwitter Kitを使ってOAuth認証&ユーザタイムライン取得-Android編その2
※追記
AndroidManifest.xmlに「android:targetSdkVersion」が無いと「Unknown error merging manifest」というエラーがでるっぽい。
事前にAndroidネイティブでTwitterにログインするところまでやっておくと分かりやすいと思います。
まずはCocos2d-xのプロジェクトを作ってEclipseにインポート。
わからない人は、こことかCocos2d-x 3.4でandroid向けにビルドする次に、FabricをEclipseにインストール
こことかを参考にしながら、fabricユーザー登録から、プラグインのインストールまでここで登録をして、https://get.fabric.io/
ここを見てください。Fabricの導入(Twitter SDK)
出来ましたでしょうか。
こんなかんじにツールバーに追加されていて、ログインできていれば成功です。
Twitter Kitの導入とログイン
先ほどのFabricの画面で、追加したいプロジェクトを選択して、NextChecking...がUnknownになるのを待ってから、TwitterのUnknownをクリック。
一番下のLog in with Twitterをselect
AndroidManifestに関しては、指示通りにコードを追加してください。
次のStartActivityはAppActivityに書きます。
onCreateメソッドが無いので、そこは丸々コピペしますが、setContentViewの行は使わないので消します。
Bundleをimportしたりして、最終的にはこんなかんじになります。
アラートが沢山出ますが、導入が終わると消えるので気にしないでください。
package org.cocos2dx.cpp; import org.cocos2dx.lib.Cocos2dxActivity; import io.fabric.sdk.android.Fabric; import android.os.Bundle; import com.twitter.sdk.android.core.TwitterAuthConfig; import com.twitter.sdk.android.Twitter; public class AppActivity extends Cocos2dxActivity { // Note: Your consumer key and secret should be obfuscated in your source code before shipping. private static final String TWITTER_KEY = "xxxxxxxx"; private static final String TWITTER_SECRET = "xxxxxxxxxxxxxxxxxxxx"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TwitterAuthConfig authConfig = new TwitterAuthConfig(TWITTER_KEY, TWITTER_SECRET); Fabric.with(this, new Twitter(authConfig)); } }
次のkits.propertiesは無視。
その次のView.xmlも無視。
その次のView ClassはAppActivityに記述しますが、内容を変えます。
Cocos2d-xでAndroidのUIを使うことは出来ないので、TwitterLoginButtonをperformClickでプログラムからクリックさせます。
importの部分はそのままコピペします。
private TwitterLoginButton loginButton;は
private static TwitterLoginButton loginButton;
とstaticに変更します。
public static void loginTwitter() { loginButton = new TwitterLoginButton(Cocos2dxActivity.getContext()); loginButton.setCallback(new Callback<TwitterSession>(){ @Override public void success(Result<TwitterSession> result) { System.out.println("success"); } @Override public void failure(TwitterException exception) { System.out.println("failue"); } }); loginButton.performClick(); }
とAppActivityクラス内に新しくメソッドを作ってその中でログインボタンを作り、クリックを発生させます。
最後に、onActivityResultメソッドをFabricの言うとおりに追加します。
全体としては、こんなかんじになります。
全体としては、こんなかんじになります。
package org.cocos2dx.cpp; import org.cocos2dx.lib.Cocos2dxActivity; import io.fabric.sdk.android.Fabric; import android.os.Bundle; import com.twitter.sdk.android.core.TwitterAuthConfig; import com.twitter.sdk.android.Twitter; import android.content.Intent; import com.twitter.sdk.android.core.Callback; import com.twitter.sdk.android.core.Result; import com.twitter.sdk.android.core.TwitterException; import com.twitter.sdk.android.core.TwitterSession; import com.twitter.sdk.android.core.identity.TwitterLoginButton; public class AppActivity extends Cocos2dxActivity { private static TwitterLoginButton loginButton; // Note: Your consumer key and secret should be obfuscated in your source code before shipping. private static final String TWITTER_KEY = "xxxxxxxxxxxxxx"; private static final String TWITTER_SECRET = "xxxxxxxxxxxxxxxxxx"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TwitterAuthConfig authConfig = new TwitterAuthConfig(TWITTER_KEY, TWITTER_SECRET); Fabric.with(this, new Twitter(authConfig)); } public static void loginTwitter() { loginButton = new TwitterLoginButton(Cocos2dxActivity.getContext()); loginButton.setCallback(new Callback<TwitterSession>(){ @Override public void success(Result<TwitterSession> result) { System.out.println("success"); } @Override public void failure(TwitterException exception) { System.out.println("failue"); } }); loginButton.performClick(); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); loginButton.onActivityResult(requestCode, resultCode, data); } }Fabricで一度最初まで戻ってからまた進むと、先ほどUnknowと出たところがInstallに変わっていて、クリックするとApplyというボタンが出てくる時があります。(正直仕組みがよくわからない)
すると左側のProjectExplorerにファイルがいくつか追加されて、Twitter Kitが導入されます。
先ほどまでたくさん出ていたアラートが消えていたら成功です。
長くなってきたので、続きはまた。
続きCocos2d-xとTwitter Kitを使ってOAuth認証&ユーザタイムライン取得-Android編その2
※追記
AndroidManifest.xmlに「android:targetSdkVersion」が無いと「Unknown error merging manifest」というエラーがでるっぽい。
コメント