MASIGNCLEAN101

Cara Membuat Login Aplikasi Menggunakan Twitter Di Java

Pembuka

Setelah sebelumnya pada tutorial Cara Menghubungkan Twitter dengan Program Java berjalan dengan sukses, kali ini saya akan memberikan contoh program Cara Membuat Login Aplikasi Menggunakan Twitter Di Java. Sama halnya dengan yang sebelumnya, kita masih menggunakan token yang pernah di buat. Namun dalam tutorial ini kita hanya menggunakan token consumer dan token secret consumer.

Pembahasan

Kita akan membuat dalam project yang berbeda atau projek baru dari sebelumnya, pada tutorial ini nama projek  adalah SystemLoginWithTwitter. Setelah projek baru dibuat akan ada nama package dengan nama systemloginwithtwitter dan main class SystemLoginWithTwitter.java. Kita akan abaikan java class tersebut, buatlah jFrame dengan nama loginFrame untuk interface login. Sekiranya dalam tutorial ini interface yang saya gunakan seperti gambar berikut.
Cara Membuat Login Aplikasi Menggunakan Twitter Di Java 1
Gambar 1
Dengan beberapa komponen interface jFrame login adalah seperti didalam tabel.

KomponenTextVariableFungsi
jFrame - - Merupakan form utama (main form )dari aplikasi berupa login
jPanel - Default (jPanel1) Panel untuk menapung komponen swing control
jLabel - icon, head, jsc Menampilkan icon twitter, menampilkan text Login With Database And Twitter, dan menampilkan text www.java-sc.com
jPanel - Default (jPanel2) Panel untuk menapung komponen swing control textfield dan button
JTextField - username textfield memasukan username
JPasswordField - password textfield memasukan password
JButton Login,Twitter,Coming Soon login_db,login_tw,login_cs tombol aksi untuk masing-masing intruksi login

Untuk interface terserah saja, karena itu adalah kreasi masing-masing developer. Selanjutnya buat lagi JFrame dengan interface untuk menampilkan  halaman utama setelah login. Beri nama JFrame baru dengan nama homeFrame, perhatikan interface yang ada saya buat (boleh ditiru ataupun tidak).
Cara Membuat Login Aplikasi Menggunakan Twitter Di Java 2
Gambar 2
Selanjutnya komponen yang digunakan pada interface homeFrame adalah seperti berikut ini.

KomponenTextVariableFungsi
jFrame - - Merupakan interface setelah login (home)
jPanel - Default (jPanel1) Panel untuk menapung komponen swing control
jLabel Selamat Datang, null, user_id, dan screen_name lbl_welcome,lbl_foto, lbl_userId, dan lbl_screenName Menapilkan data yang di dapat dari twitter
jSrollPanel - DefaultPanel untuk menapung komponen jPanel dan beberapa komponen lainnya.
JTextPane - timelineText Panel untuk menapilkan beberapa text (timeline pada twitter)

Beralih pada loginFrame.java, kemudian klik 2 kali pada tombol Twitter untuk membuat event actionPerform.
        Twitter twitter = new TwitterFactory().getInstance();
        twitter.setOAuthConsumer("Consumer Token", "Consumer Secret Token");
        try {
            RequestToken requestToken = twitter.getOAuthRequestToken();  
            
            Desktop desktop = Desktop.isDesktopSupported() ? Desktop.getDesktop() : null;
            if (desktop != null && desktop.isSupported(Desktop.Action.BROWSE)) {
                try {
                    Desktop.getDesktop().browse(new URL(requestToken.getAuthorizationURL()).toURI());
                } catch (IOException | URISyntaxException e) {
                    System.out.println("Tidak Dapat Membuka Browser :"+e.getMessage());
                }   
            }
            AccessToken accessToken = null;
            while (null == accessToken) {                
                try {
                    String pin = JOptionPane.showInputDialog(null, "Masukan Pin Autentikasi", "PIN Autentikasi Aplikasi",JOptionPane.INFORMATION_MESSAGE);
                    accessToken = twitter.getOAuthAccessToken(requestToken,pin);
                } catch (TwitterException e) {
                    JOptionPane.showMessageDialog(null,e.getMessage());
        }
}
            User user = twitter.verifyCredentials();
            JOptionPane.showMessageDialog(null, "Assalamualaikum "+user.getName());
            SystemLoginWithTwitter.set_userId(user.getId());
            SystemLoginWithTwitter.set_name(user.getName());
            SystemLoginWithTwitter.set_token(accessToken.getToken());
            SystemLoginWithTwitter.set_tokenSecret(accessToken.getTokenSecret());
            homeFrame home = new homeFrame();
            home.setVisible(true);
            this.setVisible(false);
        } catch (TwitterException e) {
            JOptionPane.showMessageDialog(null, "Gagal : "+e.getMessage());
        }
Mungkin akan ada error disebabkan karena tidak ada library yang di import, namun ada beberapa eror lagi yang belum selesai terutama pada bagian.
            SystemLoginWithTwitter.set_userId(user.getId());
            SystemLoginWithTwitter.set_name(user.getName());
            SystemLoginWithTwitter.set_token(accessToken.getToken());
            SystemLoginWithTwitter.set_tokenSecret(accessToken.getTokenSecret());
Masalah ini muncul karena kita belum membuat method untuk set dan get data pada class SystemLoginWithTwitter.java. Sekarang beralihlah pada class berikut, kemudian hapus block pada public static void main sehingga hanya menjadi seperti ini saja.
package systemloginwithtwitter;
/**
 *
 * @author jsc-dev
 */
public class SystemLoginWithTwitter {
    
}
Selanjutnya ketikan kode program berikut didalam sehingga menjadi.
package systemloginwithtwitter;
/**
 *
 * @author jsc-dev
 */
public class SystemLoginWithTwitter {
    private static Long userId;
    private static String name;
    private static String token;
    private static String tokenSecret;
    
    public static Long get_userId(){
        return userId;
    }
    public static void set_userId(Long userId){
        SystemLoginWithTwitter.userId = userId;
    }
    public static String get_name(){
        return name;
    }
    public static void set_name(String name){
        SystemLoginWithTwitter.name = name;
    }
    public static String get_token(){
        return token;
    }
    public static void set_token(String token){
        SystemLoginWithTwitter.token = token;
    }
    public static String get_tokenSeret(){
        return tokenSecret;
    }
    public static void set_tokenSecret(String tokenSecret){
        SystemLoginWithTwitter.tokenSecret = tokenSecret;
    }
}
Barulah masalah error yang terjadi seharusnya sudah selesai, apabila belum selesai silahkan berkomentar pada kolom komentar. Untuk tahap ini seharusnya jika dijalankan sudah berhasil, sebelum melakukan testing saya akan tambahkan beberapa kode program lagi untuk homeFrame.java. Buka jframe homeFrame, kemudian masuk pada bagian source dari class jFrame tersebut. Cari fungsi berikut,
    public homeFrame() {
        initComponents();
    }
Tambahkan method baru dengan nama loadDataUser(), dan ketikan kode program berikut di dalam nya.
        private void loadDataUser(){
        String nama = SystemLoginWithTwitter.get_name();
        Long userId = SystemLoginWithTwitter.get_userId();
        String token = SystemLoginWithTwitter.get_token();
        String tokenSecret = SystemLoginWithTwitter.get_tokenSeret();
        try {
            ConfigurationBuilder config = new ConfigurationBuilder();
            config.setDebugEnabled(true)
                    .setOAuthConsumerKey("KAiWPUJ41gLAG60nqY0iX1Yd6")
                    .setOAuthConsumerSecret("CIesBNQVoyobgcVAlTXLQJLVMIRpOMkAGJl1KHky7URdhVeslI")
                    .setOAuthAccessToken(token)
                    .setOAuthAccessTokenSecret(tokenSecret);

            TwitterFactory tfactory = new TwitterFactory(config.build());
            twitter4j.Twitter twitter = tfactory.getInstance();
            User user = twitter.verifyCredentials();
            lbl_welcome.setText("Selamat Datang "+nama);
            lbl_foto.setIcon((Icon) new ImageIcon(new ImageIcon(new URL(user.getOriginalProfileImageURL())).getImage().getScaledInstance(138, 138, Image.SCALE_DEFAULT)));
            lbl_userId.setText(userId.toString());
            lbl_screenName.setText(user.getScreenName());
            
            List status =  twitter.getHomeTimeline();
            StringBuilder sb = new StringBuilder();
            for (Status s : status){
                sb.append(s.getUser().getName()+" : "+s.getText()+"\n\n\n");
            }
            timelineText.setText(sb.toString());
        } catch (TwitterException e) {
            JOptionPane.showMessageDialog(null, e.getMessage(), "Gagal Membaca Data User Twitter", JOptionPane.ERROR_MESSAGE);
        } catch (MalformedURLException ex) {
            Logger.getLogger(homeFrame.class.getName()).log(Level.SEVERE, null, ex);
        } 
Nama fungsi selanjutnya di jalankan pada homeFrame sehingga menjadi seperti kode program berikut.
    public homeFrame() {
        initComponents();       loadDataUser();
    }
Selanjutnya bisa di jalankan seluruh program dengan membuka (run) pada bagian loginFrame, untuk memuali bisa lihat gambar dibawah ini.
Cara Membuat Login Aplikasi Menggunakan Twitter Di Java 3
Gambar 3

Penutup

Sayangnya cara ini hanya berguna setiap ingin masuk menggunakan akun twitter harus menggunakan akses PIN yang di kirim dari twitter. Saya belum mendapatkan solusi jika twitter4j tersedia untuk desktop dari segi login tanpa menggunakan PIN, jika menggunakan fungsi Callback URL pada twitter berlaku untuk tipe program basis web.
Share This :
Hady Eka Saputra

Belajar adalah proses menuju kesuksesan dan proses membuat hasilnya menjadi bernilai. 

avatar

Gan ini pake wp or blogger..

9 November 2017 at 17:45
avatar

Blognya pake blogger gan.

10 November 2017 at 16:16
Terimakasih sudah berkesempatan untuk menimba ilmu dari blog JSC, semoga ilmu yang di share dapat bermanfaat. Jika ada pertanyaan mengenai ilmu yang terkait ataupun tidak, mari kita berdiskusi di dalam kolom komentar ini.

Keep Learning and Keep Sharing