
问题是在第64行,它调用getAuthenticationURl().当我执行它时,我会转到登录页面,而不是允许/禁止我的应用程序访问ppl帐户的页面.
但是,如果我将其更改为getAuthorizationUrl(),它将转到正确的页面.
1)那么两者有什么区别?
2)这是一个重要的问题.我提供以下代码.
package com.example.twitter;import twitter4j.Twitter;import twitter4j.TwitterException;import twitter4j.TwitterFactory;import twitter4j.http.Accesstoken;import twitter4j.http.RequestToken;import androID.app.Activity;import androID.content.Intent;import androID.net.Uri;import androID.os.Bundle;import androID.util.Log;import androID.vIEw.VIEw;import androID.Widget.button;import androID.Widget.EditText;import androID.Widget.Toast;public class WriteTweet extends Activity{ public final static String consumerKey = "xxxxxxxxxxxxxxxxxx"; public final static String consumerSecret = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; private final String CALLBACKURL = "T4J_OAuth://callback"; Twitter twitter; RequestToken requestToken; @OverrIDe protected voID onCreate(Bundle savedInstanceState) { // Todo auto-generated method stub super.onCreate(savedInstanceState); loginUser(); } private voID loginUser() { // Todo auto-generated method stub try { twitter = new TwitterFactory().getInstance(); twitter.setoAuthConsumer(consumerKey,consumerSecret); requestToken = twitter.getoAuthRequestToken(CALLBACKURL); String authUrl = requestToken.getAuthorizationURL(); this.startActivity(new Intent(Intent.ACTION_VIEW,Uri .parse(authUrl))); } catch (TwitterException ex) { Toast.makeText(this,ex.getMessage(),Toast.LENGTH_LONG).show(); Log.e("in Main.OAuthLogin",ex.getMessage()); } } @OverrIDe protected voID onNewIntent(Intent intent) { Log.e("hi","hi"); super.onNewIntent(intent); Uri uri = intent.getData(); try { String verifIEr = uri.getqueryParameter("oauth_verifIEr"); Accesstoken accesstoken = twitter.getoAuthAccesstoken(requestToken,verifIEr); String token = accesstoken.getToken(),secret = accesstoken .getTokenSecret(); displayTimeline(token,secret); //after everything,display the first tweet } catch (TwitterException ex) { Log.e("Main.onNewIntent","" + ex.getMessage()); } } @SuppressWarnings("deprecation") voID displayTimeline(String token,String secret) { Log.e("display","timeline"); }} 清单是
<manifest xmlns:androID="http://schemas.androID.com/apk/res/androID" package="com.example.twitter" androID:versionCode="1" androID:versionname="1.0" > <uses-sdk androID:minSdkVersion="8" androID:targetSdkVersion="15" /> <uses-permission androID:name="androID.permission.INTERNET"/> <application androID:icon="@drawable/ic_launcher" androID:label="@string/app_name" androID:theme="@style/Apptheme" > <activity androID:name=".MainActivity" androID:label="@string/Title_activity_main" > <intent-filter> <action androID:name="androID.intent.action.MAIN" /> <category androID:name="androID.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity androID:name=".ListTweets" > </activity> <activity androID:name=".WriteTweet"> <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:scheme="T4J_OAuth" androID:host="callback" /> </intent-filter> </activity> <activity androID:name=".VIEwFollowers"> </activity> </application></manifest>
问题是它将我重定向到https://mobile.twitter.com/
我无法弄清楚到底出了什么问题.无论是否使用getAuthenticationUrl()或getAuthorizationUrl(),问题都存在.我在Twitter的callback_url字段中提供了一个虚拟URL.
如果我没有在代码和twitter页面中提供callbackurl,它会给我一个密码.但这不是我想要的.我需要我的Twitter重定向到我的应用程序.我怎样才能做到这一点?
>创建一个Web视图并从您的应用程序中加载twitter的构造页面.
vw = (WebVIEw)findVIEwByID(R.ID.loginVIEw);vw.setWebVIEwClIEnt(new WebVIEwClIEnt() { @OverrIDe public boolean shouldOverrIDeUrlLoading(WebVIEw vIEw,String url) { return super.shouldOverrIDeUrlLoading(vIEw,url); }}); vw.loadUrl(authUrl); >收到callback_url后,获取’oauth_verifIEr’
Uri uri = Uri.parse(url); String verifIEr = uri.getqueryParameter("oauth_verifIEr"); >使用此验证程序获取访问权限并执行所需 *** 作.在我的情况下,我销毁webvIEw并加载我需要的活动.
总结以上是内存溢出为你收集整理的twitter没有重定向到Android应用程序中的回调网址全部内容,希望文章能够帮你解决twitter没有重定向到Android应用程序中的回调网址所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)