1. 程式人生 > >Android Twitter第三方登入&獲取使用者資訊

Android Twitter第三方登入&獲取使用者資訊

Android接入Twitter先是去了Twitter的開發者網站,發現太麻煩,不太適用目前專案,轉而接入了Twitter為java提供的twitter4j的jar包。
以下為接入Twitter4j的一些經驗
其中提供了jar包下載連結
Download 分為兩個版本
・Latest stable version (穩定版)
・Latest snapshot build (快照版) 快照版應該是與時俱進版,即與下面的Source Code中提供的github網址的程式碼保持同步,大家根據自己的需求來選擇下載(例如博主下載的就是快照版,因為需要獲取到使用者的Email,而這項資訊在穩定版中是沒有的。。。)

import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import com.google.gson.Gson;

import
org.json.JSONException; import org.json.JSONObject; import java.util.HashMap; import twitter4j.Twitter; import twitter4j.TwitterException; import twitter4j.TwitterFactory; import twitter4j.User; import twitter4j.auth.AccessToken; import twitter4j.auth.RequestToken; import twitter4j.conf.Configuration; import
twitter4j.conf.ConfigurationBuilder; public class TwitterLoginActivity extends Activity { // Constants static String TWITTER_CONSUMER_KEY = "Your consumer key"; static String TWITTER_CONSUMER_SECRET = "Your consumer secret"; // Preference Constants static String PREFERENCE_NAME = "twitter_oauth"; static final String PREF_KEY_OAUTH_TOKEN = "oauth_token"; static final String PREF_KEY_OAUTH_SECRET = "oauth_token_secret"; static final String PREF_KEY_TWITTER_LOGIN = "isTwitterLogedIn"; static final String TWITTER_CALLBACK_URL = "oauth://t4jsample"; // Twitter oauth urls static final String URL_TWITTER_AUTH = "auth_url"; static final String URL_TWITTER_OAUTH_VERIFIER = "oauth_verifier"; static final String URL_TWITTER_OAUTH_TOKEN = "oauth_token"; // Twitter private static Twitter twitter; private static RequestToken requestToken; private String verifier; private GameView gameView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); startLoginTwitter(); } /** * 呼叫Twitter登入的地方呼叫此方法即可 */ public void startLoginTwitter() { ConfigurationBuilder builder = new ConfigurationBuilder(); builder.setOAuthConsumerKey(TWITTER_CONSUMER_KEY); builder.setOAuthConsumerSecret(TWITTER_CONSUMER_SECRET); Configuration configuration = builder.build(); TwitterFactory factory = new TwitterFactory(configuration); twitter = factory.getInstance(); new Thread() { @Override public void run() { try { requestToken = twitter .getOAuthRequestToken(TWITTER_CALLBACK_URL); } catch (TwitterException e) { e.printStackTrace(); } TwitterLoginActivity.this.runOnUiThread(new Runnable() { @Override public void run() { if (null != requestToken.getAuthenticationURL()) { gameView.loadUrl(requestToken.getAuthenticationURL()); } } }); } }.start(); } public class GameWebViewClient extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { LogUtil.i("shouldOverrideUrlLoading:" + url); if (null != url) { Uri uri = Uri.parse(url); if ("oauth".equals(uri.getScheme()) && "t4jsample".equals(uri.getAuthority())) { handleCallBack(uri); return true; } }; return false; } } private void handleCallBack(Uri uri) { // oAuth verifier verifier = uri.getQueryParameter(URL_TWITTER_OAUTH_VERIFIER); new Thread() { @Override public void run() { try { // Get the access token AccessToken accessToken = twitter.getOAuthAccessToken( requestToken, verifier); new Thread(new Runnable() { @Override public void run() { getUserInfo(accessToken); } }).start(); } catch (Exception e) { Log.e("Twitter Login Error", "> " + e.getMessage()); } } }.start(); } private void getUserInfo(AccessToken accessToken) { Gson gson = new GsonFactory().create(); String userId = String.valueOf(accessToken.getUserId()); try { User user = twitter.showUser(accessToken.getUserId()); String userImage = user.getProfileImageURL().toString(); String userName = user.getName(); String userSrceenName = user.getScreenName(); String userEmail = user.getEmail(); Log.e("getTwitterInfo", "userId: " + userId + " userName : " + userName + " userImage : " + userImage + " userSrceenName : " + userSrceenName + " userEmail :" + userEmail); } catch (Exception e) { e.printStackTrace(); } HashMap<String, String> tw_resp = new HashMap<String, String>(); tw_resp.put("userId", userId); tw_resp.put("userImage", userImage); tw_resp.put("userName", userName); tw_resp.put("userSrceenName", userSrceenName); tw_resp.put("userEmail", userEmail); String jsonString = gson.toJson(tw_resp); } }

使用者資訊可以在Twitter4J jar包中的User類看,以下是可獲取到的所有User相關資訊

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//

package twitter4j;

import java.io.Serializable;
import java.util.Date;
import twitter4j.Status;
import twitter4j.TwitterResponse;
import twitter4j.URLEntity;

public interface User extends Comparable<User>, TwitterResponse, Serializable {
    long getId();

    String getName();

    String getEmail();

    String getScreenName();

    String getLocation();

    String getDescription();

    boolean isContributorsEnabled();

    String getProfileImageURL();

    String getBiggerProfileImageURL();

    String getMiniProfileImageURL();

    String getOriginalProfileImageURL();

    String getProfileImageURLHttps();

    String getBiggerProfileImageURLHttps();

    String getMiniProfileImageURLHttps();

    String getOriginalProfileImageURLHttps();

    boolean isDefaultProfileImage();

    String getURL();

    boolean isProtected();

    int getFollowersCount();

    Status getStatus();

    String getProfileBackgroundColor();

    String getProfileTextColor();

    String getProfileLinkColor();

    String getProfileSidebarFillColor();

    String getProfileSidebarBorderColor();

    boolean isProfileUseBackgroundImage();

    boolean isDefaultProfile();

    boolean isShowAllInlineMedia();

    int getFriendsCount();

    Date getCreatedAt();

    int getFavouritesCount();

    int getUtcOffset();

    String getTimeZone();

    String getProfileBackgroundImageURL();

    String getProfileBackgroundImageUrlHttps();

    String getProfileBannerURL();

    String getProfileBannerRetinaURL();

    String getProfileBannerIPadURL();

    String getProfileBannerIPadRetinaURL();

    String getProfileBannerMobileURL();

    String getProfileBannerMobileRetinaURL();

    boolean isProfileBackgroundTiled();

    String getLang();

    int getStatusesCount();

    boolean isGeoEnabled();

    boolean isVerified();

    boolean isTranslator();

    int getListedCount();

    boolean isFollowRequestSent();

    URLEntity[] getDescriptionURLEntities();

    URLEntity getURLEntity();

    String[] getWithheldInCountries();
}

相關推薦

Android Twitter第三方登入&獲取使用者資訊

Android接入Twitter先是去了Twitter的開發者網站,發現太麻煩,不太適用目前專案,轉而接入了Twitter為java提供的twitter4j的jar包。 以下為接入Twitter4j的一些經驗 其中提供了jar包下載連結 Download

實現新浪微博第三方登入獲取使用者資訊

第一步:建立Android專案下載新浪sdk 下載地址:https://github.com/sinaweibosdk/weibo_android_sdk 裡面包含簽名工具和新浪官方的debug.keystore 新浪的demo必須用官方的debug.keystore編譯才

Android之QQ授權登入獲取使用者資訊

有時候我們開發的app需要方便使用者簡單登入,可以讓使用者使用自己的qq、微信、微博登入到我們自己開發的app。 今天就在這裡總結一下如何在自己的app中整合QQ授權登入獲取使用者資訊的功能。 首先我們開啟騰訊開發平臺這個網頁,點選---->移動應用---->

友盟整合QQ第三方登入獲取顯示頭像

匯入jar 2.複製官方佈局裡面的程式碼====================== 3.匯入依賴 compile 'com.umeng.sdk:common:latest.integration' compile 'com.gith

android studio第三方登入分享

參照第三方登入的教程實現以下步驟 網址:https://developer.umeng.com/docs/66632/detail/66639?tdsourcetag=s_pcqq_aiomsg#h3--android-manifest-xml 建立一個專案,注意:專案包名一定要是soe

微信小程式授權登入獲取使用者資訊詳解

今天來說一下微信小程式的授權登入獲取使用者資訊,首先我們看微信提供的小程式開發文件: https://blog.csdn.net/qq_41971087/article/details/82466647 微信登入的流程和步驟: 步驟:(個人): 第一步:微信小程式

Android開發第三方登入--微信登入

QQ登入、微信登入,新浪微博登入資料獲取demo下載 http://download.csdn.net/detail/pkandroid/9903796 github地址 進入 https://github.com/HYVincent/Login 專案

[微信開發] - 使用普通掃碼登入獲取使用者資訊,非開放平臺版本

微信平臺掃碼登入時,因為開放平臺的openid與原系統不一致,所以使用了原公眾平臺二維碼掃碼後獲取使用者openid,繼而轉連結形式. 油膩膩的大豬蹄進行測試 oysIt005E1TDKTKIdc8TmR6VTViA < 使用開放平臺的登入二維碼掃碼獲取的openid  o4

使用高德地圖根據經緯度畫出路線、計算收錄路線的總距離、使用第三方工具獲取座標資訊

寫在前面:        最近手裡有一個專案 專案面向的使用群體是公路管理方 大概的主要功能簡概如下 收錄正在修建 / 剛剛修建完畢 / 未被第三方地圖收錄的路線(使用者可以手機記錄新的路線 收錄在自己的平臺裡 但手機記錄弊端過大 還是

Java實現微信小程式登入 獲取使用者資訊

小程式比公眾號授權登入 更加簡單 其實沒什麼是後臺需要處理的 前端傳過來一個code 我們儲存以下通過code獲取過來的openid就可以 其他的使用者資訊 前端小程式那邊可以獲取。首先既然是小程式登入 你要有一個你自己的小程式還是要拿到你自己的appid和appSecret

微信小程式之使用者登入(獲取使用者資訊,openid,unionld) java後臺版

參考文章:https://blog.csdn.net/guochanof/article/details/80189935;感謝作者給的思路與大部分問題解決辦法由於微信官方api的更改,wx.getuserinfo()方法無法在無授權的情況下直接使用,參考文中作者是直接可以拉

java實現微信公眾號授權登入獲取使用者資訊流程

參考地址微信公眾號開發文件:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1445241432 前提:需要申請認證的微信公眾號;獲取對應的APPID和APPSECRET;並且還需要獲取到使用者資訊許可權

Google Facebook twitter 第三方登入

https://dev.twitter.com/web/sign-in/implementinghttps://blog.csdn.net/yangjian8915/article/details/11816669https://blog.csdn.net/manongxia

Android通過第三方登入理解oauth2.0機制

1. OAuth2.0介紹 說到第三方登入,離不開oauth2.0,oauth2.0是“使用者認證和授權的標準”,是從oauth1.0基礎上發展來的。下圖是oauth2.0六個過程分析圖,為了分析這6個流程,下面我們通過新浪微盤授權登入demo,詳細解析。 2. 執

Android工具類—— android 從SIM卡獲取聯絡人資訊

<span style="font-size:18px;color:#3333ff;">01./**   02.     * 從SIM卡中讀取聯絡人資訊   03.     * @r

android 程式碼中實現獲取log資訊

 class NotificationLogAdapter extends BaseAdapter {         private ArrayList<EventLog.Event> mNotificationEvents;         private

PHP 微信授權登入獲取使用者資訊

//呼叫微信授權登入(微信公眾平臺)         public function add_user(){             //獲取微信公眾號的APPID             $app_id  = '';             //請求介面回撥地址     

Android FaceBook 第三方登入開發摘要

個人開發筆記,大神繞路。 由於Facebook 是外國人常用的軟體 所以 翻牆是必須的(VPN) 在此不贅述 下面這幅圖說明了總共需要什麼東西 1.Facebook應用程式 - 配置並連結到你的應用程式,與單點登入功能。 2.新增工程,下載S

Android ShareSDK第三方登入(分別有新浪、QQ、微信、Facebook、Linkedin、Google等等)

專案的Demo:快速整合:1. 獲取ShareSDK的AppKey2. 下載SDK下載頁如圖所示:點選下載之後如下圖所以,點選下載SDK的下載頁,展開平臺可以選擇其他的第三方平臺;demo也是這裡下載;下載完之後的解壓目錄如圖所示:3. 快速整合ShareSDK深受大家喜愛,

Android開發第三方登入--QQ登入

QQ登入、微信登入,新浪微博登入資料獲取demo下載 http://download.csdn.net/detail/pkandroid/9903796 github地址 進入 https://github.com/HYVincen