码
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所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)