Cocos2d-xとTwitter Kitを使ってOAuth認証&ユーザタイムライン取得-Android編その1

ツイートを使ったゲームをCocos2d-xで作りたかったので、Twitter Kit(Fabric)を使って、ツイッターのユーザタイムラインの取得をやってみました。
事前にAndroidネイティブでTwitterにログインするところまでやっておくと分かりやすいと思います。

まずはCocos2d-xのプロジェクトを作ってEclipseにインポート。

わからない人は、こことかCocos2d-x 3.4でandroid向けにビルドする

次に、FabricをEclipseにインストール

こことかを参考にしながら、fabricユーザー登録から、プラグインのインストールまで
ここで登録をして、https://get.fabric.io/
ここを見てください。Fabricの導入(Twitter SDK)

出来ましたでしょうか。
こんなかんじにツールバーに追加されていて、ログインできていれば成功です。

Twitter Kitの導入とログイン

先ほどのFabricの画面で、追加したいプロジェクトを選択して、Next
Checking...が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に変更します。

次のonCreateの中身は、代わりに

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」というエラーがでるっぽい。

コメント

このブログの人気の投稿

2次元配列のコピー::JavaScript

iframeの利点と欠点

chromyを実行するとエラー:"Failed to launch a browser"が出る