日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

android10热点验证身份,通过Android的AccountManager类进行Twitter身份验证

發布時間:2023/12/15 Android 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android10热点验证身份,通过Android的AccountManager类进行Twitter身份验证 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我正在開發一個

Android應用程序,并希望集成Twitter.

我所理解的是,如果在用戶的設備上安裝了官方的Android Twitter應用程序,那么我們可以使用賬戶經理進行身份驗證,如果沒有安裝,則顯示twitter登錄網頁.

我的理解是否正確?

現在使用twitter web登錄頁面進行身份驗證工作正常.但是如何使用客戶經理登錄?

使用AccountsType作為“com.twitter.android.auth.login”

我使用來自的客戶經理獲得了令牌和令牌秘密

?com.twitter.android.oauth.token

?com.twitter.android.oauth.token.secret

我正在使用Twitter4J,并使用我的CONSUMER_KEY& CONSUMER_SECRET和recvd.令牌.但身份驗證始終失敗.

CONSUMER_KEY& CONSUMER_SECRET是我在twitter上注冊應用程序時獲得的密鑰…但我不明白如何在官方Android Twitter應用程序身份驗證中使用這些密鑰?

PLS.讓我知道謝謝

這是我的代碼

public class TwitterAuthentication {

private static final String TAG = "TwitterAuthentication";

private static final int MSG_GOT_AUTH_TOKEN = 100;

private static final int MSG_GOT_AUTH_SECRET = 101;

private static final int MSG_NO_AUT_TOKEN_RECVD = 102;

public static Twitter mTwitter = null;

private Activity mActivity = null;

private SharedPreferences prefs;

private MessageHandler handler = new MessageHandler();

public static boolean bAuthenticationDone = false;

public TwitterAuthentication(Activity activity){

mActivity = activity;

prefs = PreferenceManager.getDefaultSharedPreferences(mActivity);

if (null == mTwitter){

mTwitter = new TwitterFactory().getInstance();;

mTwitter.setOAuthConsumer(Constant.CONSUMER_KEY,Constant.CONSUMER_SECRET);

bAuthenticationDone = false;

}

}

public void LoginTwitter(){

if (Constants.DEBUG)Log.d(TAG,"LoginTwitter");

if (bAuthenticationDone){

TwitterSessionEvents.onLoginSuccess();

}

else if (!isSessionValid()){

AuthTwitter();

}

else{

bAuthenticationDone = true;

TwitterSessionEvents.onLoginSuccess();

}

}

public boolean isSessionValid(){

boolean ret = false;

if (null != prefs && null != mTwitter){

String token = prefs.getString(Constant.OAUTH_TOKEN,"");

String secret = prefs.getString(Constant.OAUTH_TOKEN_SECRET,"");

if (null != token && null != secret && token.length()>0 && secret.length()>0){

AccessToken a = new AccessToken(token,secret);

mTwitter.setOAuthAccessToken(a);

try {

mTwitter.getAccountSettings();

keys.User_Id = mTwitter.getScreenName();

ret = true;

} catch (TwitterException e) {

ret = false;

}

}

}

return ret;

}

public void AuthTwitter(){

// First check if Account manager has valid token

// Result of this is send in MSG

CheckAccManagerForTwitter();

}

public Twitter getTwitter(){

return mTwitter;

}

private boolean CheckAccManagerForTwitter(){

AccountManager am = AccountManager.get(mActivity);

Account[] accts = am.getAccountsByType("com.twitter.android.auth.login");

if(accts.length > 0) {

Account acct = accts[0];

am.getAuthToken(acct,"com.twitter.android.oauth.token",null,mActivity,new AccountManagerCallback() {

@Override

public void run(AccountManagerFuture arg0) {

try {

Bundle b = arg0.getResult();

String token = b.getString(AccountManager.KEY_AUTHTOKEN);

String userName = b.getString(AccountManager.KEY_ACCOUNT_NAME);

handler.sendMessage(handler.obtainMessage(MSG_GOT_AUTH_TOKEN,token));

}

catch (Exception e) {

Log.e(TAG,"EXCEPTION@AUTHTOKEN");

handler.sendEmptyMessage(MSG_NO_AUT_TOKEN_RECVD);

}

}},null);

am.getAuthToken(acct,"com.twitter.android.oauth.token.secret",new AccountManagerCallback() {

@Override

public void run(AccountManagerFuture arg0) {

try {

Bundle b = arg0.getResult();

String secret = b.getString(AccountManager.KEY_AUTHTOKEN);

handler.sendMessage(handler.obtainMessage(MSG_GOT_AUTH_SECRET,secret));

}

catch (Exception e) {

Log.e(TAG,"EXCEPTION@AUTHTOKEN");

handler.sendEmptyMessage(MSG_NO_AUT_TOKEN_RECVD);

}

}},null);

//

}

else{

// No twitter account found in Account Manager

Log.e(TAG,"No Twitter account in Account manager");

handler.sendEmptyMessage(MSG_NO_AUT_TOKEN_RECVD);

}

return true;

}

class MessageHandler extends Handler {

String token = null;

String secret = null;

@Override

public void handleMessage(Message msg) {

if (msg.what == MSG_GOT_AUTH_TOKEN | msg.what ==MSG_GOT_AUTH_SECRET){

if (msg.what == MSG_GOT_AUTH_TOKEN){

token = (String)msg.obj;

}

else if (msg.what == MSG_GOT_AUTH_SECRET){

secret = (String)msg.obj;

}

if (null != token && null != secret){

AccessToken accesstoken = new AccessToken(token,secret);

mTwitter.setOAuthAccessToken(accesstoken);

try {

mTwitter.getAccountSettings();

keys.User_Id = mTwitter.getScreenName();

} catch (Exception e) {

// That means Authentication Failed

// So fall back to web login

Intent i = new Intent(mActivity.getApplicationContext(),PrepareRequestTokenActivity.class);

mActivity.startActivity(i);

}

}

}

else if (msg.what == MSG_NO_AUT_TOKEN_RECVD){

// That means There is no twiter account with Account Manager

// So fall back to web login

Intent i = new Intent(mActivity.getApplicationContext(),PrepareRequestTokenActivity.class);

mActivity.startActivity(i);

}

}

}

public void logoutTwiter(){

}

}

總結

以上是生活随笔為你收集整理的android10热点验证身份,通过Android的AccountManager类进行Twitter身份验证的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。