android – 使用WebView登录Twitter

android – 使用WebView登录Twitter,第1张

概述嗨,我使用浏览器完成了Twitter登录 码 TwitLoginActivity.java(主要活动) package com.app.twitlogin;import twitter4j.Twitter;import twitter4j.TwitterException;import twitter4j.TwitterFactory;import twitter4j.User;imp 嗨,我使用浏览器完成了Twitter登录

TwitLoginActivity.java(主要活动)

package com.app.twitlogin;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;import androID.app.Activity;import androID.content.Intent;import androID.net.Uri;import androID.os.Bundle;import androID.os.Handler;import androID.os.StrictMode;import androID.util.Log;import androID.vIEw.Menu;import androID.vIEw.MenuItem;import androID.vIEw.VIEw;import androID.vIEw.VIEw.OnClickListener;import androID.Widget.button;public class TwitLoginActivity extends Activity {static String TWITTER_CONSUMER_KEY;static String TWITTER_CONSUMER_SECRET;static String TWITTER_CALLBACK_URL;static String URL_TWITTER_OAUTH_VERIFIER;private static Twitter twitter;button btnActualLoginTwitter;private static RequestToken requestToken;String twitUserID,twitUsername,tw@R_419_6607@cesstoken,twitTokenSecret,twitProfileimg;@OverrIDeprotected voID onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentVIEw(R.layout.activity_twit_login);    if (androID.os.Build.VERSION.SDK_INT > 11) {        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()                .permitAll().build();        StrictMode.setThreadPolicy(policy);    }    TWITTER_CONSUMER_KEY = getString(R.string.twitter_consumer_key);    TWITTER_CONSUMER_SECRET = getString(R.string.twitter_consumer_secret);    TWITTER_CALLBACK_URL = getString(R.string.twitter_callback);    URL_TWITTER_OAUTH_VERIFIER = getString(R.string.twitter_oauth_verifIEr);    btnActualLoginTwitter = (button) findVIEwByID(R.ID.btn_twit_login);    btnActualLoginTwitter.setonClickListener(new OnClickListener() {        @OverrIDe        public voID onClick(VIEw arg0) {            btnActualLoginTwitter.setClickable(false);            Runnable buttonClickable = new Runnable() {                @OverrIDe                public voID run() {                    btnActualLoginTwitter.setClickable(true);                }            };            Handler pdCanceller = new Handler();            pdCanceller.postDelayed(buttonClickable,2000);            Log.e("Came","Came");            loginToTwitter();        }    });    Uri uri = getIntent().getData();    if (uri != null && uri.toString().startsWith(TWITTER_CALLBACK_URL)) {        String verifIEr = uri.getqueryParameter(URL_TWITTER_OAUTH_VERIFIER);        try {            Accesstoken accesstoken = twitter.getoAuthAccesstoken(requestToken,verifIEr);            twitUserID = "" + twitter.getID();            twitUsername = twitter.getScreenname();            tw@R_419_6607@cesstoken = accesstoken.getToken();            twitTokenSecret = accesstoken.getTokenSecret();            User user = twitter.showUser(twitter.getID());            twitProfileimg = user.getProfileImageURL();            Log.e("twitUserID",twitUserID);            Log.e("twitUsername",twitUsername);            Log.e("tw@R_419_6607@cesstoken",tw@R_419_6607@cesstoken);            Log.e("twitTokenSecret",twitTokenSecret);            Log.e("twitProfileimg",twitProfileimg);        } catch (Exception e) {            Log.e("Twitter Login Error","" + e.getMessage());        }    }} private voID loginToTwitter() {    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();    Log.e("TwitterLoginobject",twitter + "");    try {        requestToken = twitter.getoAuthRequestToken(TWITTER_CALLBACK_URL);        this.startActivity(new Intent(Intent.ACTION_VIEW,Uri.parse(requestToken.getAuthenticationURL())));    } catch (TwitterException e) {        e.printstacktrace();    } }@OverrIDepublic boolean onCreateOptionsMenu(Menu menu) {    getMenuInflater().inflate(R.menu.twit_login,menu);    return true; }@OverrIDepublic boolean onoptionsItemSelected(MenuItem item) {    int ID = item.getItemID();    if (ID == R.ID.action_settings) {        return true;    }    return super.onoptionsItemSelected(item);  }  }

strings.xml中

<string name="twitter_consumer_key">May Key</string><string name="twitter_consumer_secret">My secret</string><string name="twitter_callback">oauth://t4Jsample</string><string name="twitter_oauth_verifIEr">oauth_verifIEr</string>

表现

<?xml version="1.0" enCoding="utf-8"?><manifest xmlns:androID="http://schemas.androID.com/apk/res/androID"    package="com.app.twitlogin"    androID:versionCode="1"    androID:versionname="1.0" >    <uses-sdk        androID:minSdkVersion="11"        androID:targetSdkVersion="21" />    <uses-permission androID:name="androID.permission.INTERNET"/>    <uses-permission androID:name="androID.permission.ACCESS_NETWORK_STATE" />    <application        androID:allowBackup="true"        androID:icon="@drawable/ic_launcher"        androID:label="@string/app_name"        androID:theme="@style/Apptheme" >        <activity            androID:name=".TwitLoginActivity"            androID:label="@string/app_name" >            <intent-filter>                <action androID:name="androID.intent.action.MAIN" />                <category androID:name="androID.intent.category.LAUNCHER" />            </intent-filter>            <intent-filter>                <action androID:name="androID.intent.action.VIEW" />                <category androID:name="androID.intent.category.DEFAulT" />                <category androID:name="androID.intent.category.broWSABLE" />                <data                    androID:host="t4Jsample"                    androID:scheme="oauth" />            </intent-filter>        </activity>    </application></manifest>

现在我想使用网页浏览而不是浏览器登录(为什么因为有时候twitter没有重定向到我的应用程序).对于这个要求,我看到谷歌和SO的几乎所有建议,但我没有实现这一点.所以,请帮我用WebVIEw登录

解决方法 第1步:

在loginToTwitter()中这样做:

if (!isLoggedIn) {        final ConfigurationBuilder builder = new ConfigurationBuilder();        builder.setoAuthConsumerKey(consumerKey);        builder.setoAuthConsumerSecret(consumerSecret);        final Configuration configuration = builder.build();        final TwitterFactory factory = new TwitterFactory(configuration);        twitter = factory.getInstance();        try {            requestToken = twitter.getoAuthRequestToken(callbackUrl);            final Intent intent = new Intent(getActivity(),WebVIEwActivity.class);            intent.putExtra(WebVIEwActivity.EXTRA_URL,requestToken.getAuthenticationURL());            startActivityForResult(intent,WEBVIEW_REQUEST_CODE);        } catch (TwitterException e) {            e.printstacktrace();        }    }

第2步:

并通过在WebVIEwActivity中扩展WebVIEwClIEnt(如here)来创建webvIEwclIEnt

第3步:

并在主要活动中实现’onActivityResult’,例如:

if (requestCode == WEBVIEW_REQUEST_CODE) {        try {            String verifIEr = data.getExtras().getString(oAuthVerifIEr);            Accesstoken accesstoken = twitter.getoAuthAccesstoken(requestToken,verifIEr);            long userID = accesstoken.getUserID();            final User user = twitter.showUser(userID);            String username = user.getname();            saveTwitterInfo(accesstoken);            String ID = mSharedPreferences.getString(WSKeys.TwitterClass.PREF_USER_ID,"");            String name = mSharedPreferences.getString(WSKeys.TwitterClass.PREF_USER_name,"");            wscallSocialSignIn("",ID,accesstoken.toString(),name,image,"Twitter");        } catch (Exception exception) {        }    }
总结

以上是内存溢出为你收集整理的android – 使用WebView登录Twitter全部内容,希望文章能够帮你解决android – 使用WebView登录Twitter所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1125676.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存