twitter没有重定向到Android应用程序中的回调网址

twitter没有重定向到Android应用程序中的回调网址,第1张

概述我的目标是允许使用twitter4j进行Twitter登录. I used this as reference. 问题是在第64行,它调用getAuthenticationURl().当我执行它时,我会转到登录页面,而不是允许/禁止我的应用程序访问ppl帐户的页面. 但是,如果我将其更改为getAuthorizationUrl(),它将转到正确的页面. 1)那么两者有什么区别? 2)这是一个重要的 我的目标是允许使用twitter4j进行Twitter登录. I used this as reference.

问题是在第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应用程序中的回调网址所遇到的程序开发问题。

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

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

原文地址:https://54852.com/web/1129094.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存