HOME
  Security
   Software
    Hardware
  
FPGA
  CPU
   Android
    Raspberry Pi
  
nLite
  Xcode
   etc.
    ALL
  
LINK
BACK
 

2022/04/16

Androidの公式 Twitterライブラリで Twitterのユーザー タイムラインを丸っと取得する方法 Androidの公式 Twitterライブラリで Twitterのユーザー タイムラインを丸っと取得する方法

(Twitter Kit for Androidでまるっと取得!ユーザーアカウントでのログイン不要)

Tags: [Windows], [無人インストール]




● Androidで Twitterの投稿内容を投稿画像込みで丸っと取得する方法

 まるっと取得したかった!質問は受け付けない!

 前回は Python3の tweepyライブラリ、.NET C#の Tweetinviライブラリで作りましたが、今回は Androidで作ります。

2022/04/10
Pythonの Tweepyライブラリで Twitterの投稿内容を投稿画像込みで丸っと取得する方法
Pythonの Tweepyライブラリで Twitterの投稿内容を投稿画像込みで丸っと取得する方法

  まるっと取得したかった!質問は受け付けない!

2022/04/14
.NET C#の Tweetinviライブラリで Twitterの投稿内容を投稿画像込みで丸っと取得する方法
.NET C#の Tweetinviライブラリで Twitterの投稿内容を投稿画像込みで丸っと取得する方法

  まるっと取得したかった!質問は受け付けない!

・必要な物
 取得したい Twitterのアカウントの @マークの部分(URLでも良い)
 以上!


● Twitterの Androidライブラリ Twitter Kit SDKを使いました。

 Twitterの Android用のライブラリには公式の Twitter Kit SDKを使いました。

Twitter Kit SDKのサポート終了のお知らせ
 2018年5月6日

Twitter Kit for Android
 31 Oct 2018


● Androidで Twitterの投稿内容を投稿画像込みで丸っと取得する方法

.\gradle.properties
...
android.useAndroidX=true
android.enableJetifier=true

.\settings.gradle
...
dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
        // https://github.com/twitter-archive/twitter-kit-android
        jcenter()
    }
}
...

.\app\twitter.properties
# Twitter API key can be obtained at https://apps.twitter.com.
twitterConsumerKey=xxxxxxxxxxxxx
twitterConsumerSecret=xxxxxxxxxxxxxxxxxxxxx

# MoPub AD Unit Id can be obtained at https://app.mopub.com/.
mopubAdUnitId=EDIT_THIS(不要)

twitter-kit-android/samples/app/build.gradle
.\app\build.gradle
plugins {
    id 'com.android.application'
    id 'org.jetbrains.kotlin.android'
}

// Load API Key information in from property file
Properties props = new Properties()
try {
    props.load(file('twitter.properties').newDataInputStream())
} catch (Exception _) {
    throw new GradleException("Missing twitter.properties, check the twitter.properties.sample file.")
}

    buildTypes {
     // API Key
        debug {
            resValue "string", "com.twitter.sdk.android.CONSUMER_KEY", "\"${props.getProperty("twitterConsumerKey")}\""
            resValue "string", "com.twitter.sdk.android.CONSUMER_SECRET", "\"${props.getProperty("twitterConsumerSecret")}\""
            resValue "bool", "com.twitter.sdk.android.TRACE_ENABLED", "true"
            resValue "bool", "com.twitter.sdk.android.COLLECT_IDENTIFIERS_ENABLED", "true"

            buildConfigField "String", "MOPUB_AD_UNIT_ID", "\"${props.getProperty("mopubAdUnitId")}\""
        }
...

dependencies {

    implementation 'androidx.core:core-ktx:1.7.0'
    implementation 'androidx.appcompat:appcompat:1.3.0'
    implementation 'com.google.android.material:material:1.4.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
    testImplementation 'junit:junit:4.13.2'
    androidTestImplementation 'androidx.test.ext:junit:1.1.3'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'

    // https://github.com/twitter-archive/twitter-kit-android
    implementation('com.twitter.sdk.android:twitter-core:3.3.0') {transitive = true;}
    implementation 'com.twitter.sdk.android:twitter:3.3.0'
    // implementation 'com.twitter.sdk.android:tweet-ui:3.3.0'
    // implementation 'com.twitter.sdk.android:tweet-composer:3.3.0'
}

.\app\src\main\AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="xxx.xxx">

    <uses-permission android:name="android.permission.INTERNET"/>

    <application
        android:name=".MyApplication"
...

MyApplication.kt
package xxx.xxx

import android.app.Application
import android.util.Log
import com.twitter.sdk.android.core.DefaultLogger
import com.twitter.sdk.android.core.Twitter
import com.twitter.sdk.android.core.TwitterConfig


class MyApplication : Application() {
    override fun onCreate() {
        super.onCreate()

        // twitterAuthConfig = null to Generate internal
        val config = TwitterConfig.Builder(this)
            .logger(DefaultLogger(Log.DEBUG))
            // .twitterAuthConfig(TwitterAuthConfig(CONSUMER_KEY, CONSUMER_SECRET))
            .debug(true)
            .build()
        Twitter.initialize(config)
    }
}

package xxx.xxx

import android.content.Intent
import android.os.Bundle
import android.view.View
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import com.twitter.sdk.android.core.Callback
import com.twitter.sdk.android.core.Result
import com.twitter.sdk.android.core.TwitterCore
import com.twitter.sdk.android.core.TwitterException
import com.twitter.sdk.android.core.TwitterSession
import com.twitter.sdk.android.core.identity.TwitterAuthClient
import com.twitter.sdk.android.core.identity.TwitterLoginButton
import com.twitter.sdk.android.core.models.Tweet

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val screenName = "xxxxxxxx"
        val tweetCount = 200
        val sinceId: Long? = null
        val maxId: Long? = null
        val twitterApiClient = TwitterCore.getInstance().guestApiClient
        val call = twitterApiClient.statusesService.userTimeline(
            null,
            screenName,
            tweetCount,
            sinceId,
            maxId,
            true,
            false,
            false,
            true
        )

        call.enqueue(object : Callback<List<Tweet>>() {
            override fun success(result: Result<List<Tweet>>) {
                // タイムライン取得成功
                val tweets: List<Tweet> = result.data
            }

            override fun failure(ex: TwitterException) {
                // タイムライン取得失敗
            }
        })
    }
}

if (config.twitterAuthConfig == null)
    private Twitter(TwitterConfig config) {
        context = config.context;
        lifecycleManager = new ActivityLifecycleManager(context);

        if (config.twitterAuthConfig == null) {
            final String key = CommonUtils.getStringResourceValue(context, CONSUMER_KEY, "");
            final String secret = CommonUtils.getStringResourceValue(context, CONSUMER_SECRET, "");
            twitterAuthConfig = new TwitterAuthConfig(key, secret);
        } else {
            twitterAuthConfig = config.twitterAuthConfig;
        }

Call<List<Tweet>> userTimeline
package com.twitter.sdk.android.core.services;
public interface StatusesService {

    @GET("/1.1/statuses/user_timeline.json?" +
            "tweet_mode=extended&include_cards=true&cards_platform=TwitterKit-13")
    Call<List<Tweet>> userTimeline(@Query("user_id") Long userId,
                                   @Query("screen_name") String screenName,
                                   @Query("count") Integer count,
                                   @Query("since_id") Long sinceId,
                                   @Query("max_id") Long maxId,
                                   @Query("trim_user") Boolean trimUser,
                                   @Query("exclude_replies") Boolean excludeReplies,
                                   @Query("contributor_details") Boolean contributeDetails,
                                   @Query("include_rts") Boolean includeRetweets);

import android.content.Intent
import android.view.View
import com.twitter.sdk.android.core.TwitterSession
import com.twitter.sdk.android.core.identity.TwitterLoginButton

    lateinit var client: TwitterAuthClient
    lateinit var loginButton: TwitterLoginButton

    {
        loginButton = findViewById<View>(R.id.login_button) as TwitterLoginButton
        loginButton.setCallback(object : Callback<TwitterSession>() {
            override fun success(result: Result<TwitterSession>) {
            }

            override fun failure(ex: TwitterException) {
                // Failed to get request token
            }
        })

        // instantiate our client
        client = TwitterAuthClient()

        // make the call to login
        client.authorize(this, object : Callback<TwitterSession>() {
            override fun success(result: Result<TwitterSession>) {
                // R
                val r = result.data
            }

            override fun failure(ex: TwitterException) {
                val f = ex.message
            }
        })
    }

    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
        // this method call is necessary to get our callback to get called.
        client.onActivityResult(requestCode, resultCode, data)
        loginButton.onActivityResult(requestCode, resultCode, data)
    }


● Duplicate class android.support.v4.app.INotificationSideChannel

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:checkDebugDuplicateClasses'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.CheckDuplicatesRunnable
   > Duplicate class android.support.v4.app.INotificationSideChannel found in modules core-1.7.0-runtime (androidx.core:core:1.7.0) and support-compat-26.1.0-runtime (com.android.support:support-compat:26.1.0)
     Duplicate class android.support.v4.app.INotificationSideChannel$Stub found in modules core-1.7.0-runtime (androidx.core:core:1.7.0) and support-compat-26.1.0-runtime (com.android.support:support-compat:26.1.0)

.\gradle.properties
android.useAndroidX=true
android.enableJetifier=true


● Disable wildcard imports

Disable wildcard imports



Tags: [Windows], [無人インストール]

●関連するコンテンツ(この記事を読んだ人は、次の記事も読んでいます)

Androidで DBのフレームワーク SQLDelightを使う方法、公式の手順だとエラーしか出ない罠
Androidで DBのフレームワーク SQLDelightを使う方法、公式の手順だとエラーしか出ない罠

  SQLDelightを Androidで使う方法

Androidで Twitter4Jを使って Twitterのユーザー タイムラインを丸っと取得する方法
Androidで Twitter4Jを使って Twitterのユーザー タイムラインを丸っと取得する方法

  Twitter4Jの Java ラッパでまるっと取得!ユーザーアカウントでのログインが必要

.NET C#の Tweetinviライブラリで Twitterの投稿内容を投稿画像込みで丸っと取得する方法
.NET C#の Tweetinviライブラリで Twitterの投稿内容を投稿画像込みで丸っと取得する方法

  まるっと取得したかった!質問は受け付けない!

Pythonの Tweepyライブラリで Twitterの投稿内容を投稿画像込みで丸っと取得する方法
Pythonの Tweepyライブラリで Twitterの投稿内容を投稿画像込みで丸っと取得する方法

  まるっと取得したかった!質問は受け付けない!

ちいかわの単行本を買ってみた!もちろん特装版!
ちいかわの単行本を買ってみた!もちろん特装版!

  特装版のカルタが怖いと話題のちいかわ単行本。

すみっコぐらし サンエックスの人気キャラクター お菓子のキッシュシュクレ(タルト)、フィナンシェ
すみっコぐらし サンエックスの人気キャラクター お菓子のキッシュシュクレ(タルト)、フィナンシェ

  すみっコぐらしshop東京駅店 東京キャラクターストリート 東京駅一番街に行ってみた

【全集中の呼吸】鬼滅の刃の食玩お菓子を買ったら報告するスレ、オマケシール集め【鬼殺隊】
【全集中の呼吸】鬼滅の刃の食玩お菓子を買ったら報告するスレ、オマケシール集め【鬼殺隊】

  【全買占め】「鬼滅の刃」ブームに乗っかって鬼滅のお菓子を根こそぎ買い占め、これは戦争だ【在庫滅殺】

【我が道を】遂にガチの食玩にも手を出してしまった。。。Re:ゼロから始める異世界生活ウエハース vol.3【突き進むのみ】
【我が道を】遂にガチの食玩にも手を出してしまった。。。Re:ゼロから始める異世界生活ウエハース vol.3【突き進むのみ】

  【レムは俺の嫁】レムが主役のアニメ、リゼロ【エミリアは脇役】

テレビアニメ ご注文はうさぎですか? 通称「ごちうさ」のフィギュアを買ったのでレビュー
テレビアニメ ご注文はうさぎですか? 通称「ごちうさ」のフィギュアを買ったのでレビュー

  ごちうさのスペシャル フィギュア チノ リゼ シャロを買ったのでレビュー、UFOキャッチャー景品




[HOME] | [BACK]
リンクフリー(連絡不要、ただしトップページ以外は Web構成の変更で移動する場合があります)
Copyright (c) 2022 FREE WING,Y.Sakamoto
Powered by 猫屋敷工房 & HTML Generator

http://www.neko.ne.jp/~freewing/software/twitter_api_get_whole_tweet_android/