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