【问题标题】:Android twitter callback URL errorAndroid 推特回调 URL 错误
【发布时间】:2014-10-07 16:55:15
【问题描述】:

好的,所以我正在创建一个 twitter 克隆,我现在唯一遇到的问题是回调 URL 让我回到应用程序,而是给了我一个找不到页面的错误。

我在stackoverflow中看到了一些类似的问题,并按照步骤操作。

  1. 我正在使用代码获取身份验证 URL:

    public String beginAuthorization(){
     try{
        if(null==currentRequestToken){
            currentRequestToken = twitter.getOAuthRequestToken(TWITTER_CALLBACK_URL);
        }
        return currentRequestToken.getAuthenticationURL();
    
    }catch (TwitterException te){
        te.printStackTrace();
    }
    return null; }
    
  2. 接下来我正在使用代码检索访问令牌:

    public void setAccessToken(Uri uri) {
    
    if (uri != null && uri.toString().startsWith(TWITTER_CALLBACK_URL)) {
        String verifier = uri.getQueryParameter("oauth_token");
        try {
            AccessToken accessToken = twitter.getOAuthAccessToken(app.currentRequestToken, verifier);
            //shared prefs
            SharedPreferences.Editor e = yambaSharedPrefs.edit();
            e.putString(PREF_KEY_OAUTH_TOKEN, accessToken.getToken());
            e.putString(PREF_KEY_OAUTH_SECRET, accessToken.getTokenSecret());
    
            //store log in status
            e.putBoolean(PrefSharedTwitterLoggedIn, true);
            e.apply();
            Intent intent = new Intent(this, StatusActivity.class);
            startActivity(intent);
    
        } catch (TwitterException e) {
            e.printStackTrace();
        }
    }   }
    
  3. 我的回调 URL 如下所示:

    public static final String  OAUTH_CALLBACK_SCHEME = "twitter4j-MiYAMBA";public static final String  OAUTH_CALLBACK_HOST  = "callback";public static final String  TWITTER_CALLBACK_URL = OAUTH_CALLBACK_SCHEME + "://" + OAUTH_CALLBACK_HOST;
    
  4. 我还在意图过滤器中添加了回调 URL,例如:

    数据 android:host="callback" android:scheme="twitter4j-MiYAMBA"

现在我不确定问题可能出在哪里。

这也是控制流经应用程序的方式:

StatusActivity 在应用程序运行时启动,它使用在名为 YAMBAapp 的 Android 应用程序类中定义的函数 isAuthorised() 检查是否设置了 AccessToken,如果已定义,则开始设置布局,即正在使按钮和东西可见,否则它将控制传递给函数 beginAuthorization(),该函数启动一个名为 AuthorizationActivity 的 Activity,它获取 Authentication URL 并将其传递给 WebView,所有这些都在函数 onResume 中完成,在这个函数中我调用另一个函数 setAccessToken 并传递具有数据的“uri”:

uri = getIntent().getData();
setAccessToken(uri);

我已经粘贴了上面 setAccessToken 的代码。 同样在清单中,我在“AuthorizationActivity”的意图过滤器中定义了“数据”项,而不是“StatusActivity”,尽管它没有任何效果。

请帮忙,我现在真的被困了几天:)

【问题讨论】:

    标签: android twitter callback twitter4j


    【解决方案1】:

    首先,当您使用默认网络浏览器启动 twitter 身份验证时,一旦收到访问令牌并因此找不到页面,您将永远不会返回主应用程序,因为 url 无效。

    您需要通过自己的应用程序使用 Web 视图加载身份验证,现在您可以在此处覆盖一些功能,例如重定向时。在这里您需要进行最终处理并终止 Web 视图,这将导致控制权返回到您自己的应用程序,而不是在浏览器中看到未找到的页面。

    示例:这是您如何覆盖 webview 机制的方法,现在您创建一个带有主题(如对话框或其他)的活动,并使用 twitter auth url 在其中加载此 webview,一旦用户验证自己 shouldOverrideUrlLoading 将被调用,这里你取回验证者并退出..

    webView.setWebViewClient( new WebViewClient()
    {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url)
        {
            // your url pattern here
            if( url.contains("callback://twitter4j-MiYAMBA"))
            {
    
                Uri uri = Uri.parse( url );
                // you get the verifier here
                String oauthVerifier = uri.getQueryParameter( "oauth_verifier" );
    
                // Do whateever u want here
                ..oauthVerifier.
    
                //
                // Finish this task, so you return back to activity from where it started
                finish();
                return true;
            }
            return false;
        }
    });
    

    我想这足以完成其余的实施。更多信息在这里'

    http://daiwei.lu/2014/01/22/twitter-oauth-flow-on-android/

    【讨论】:

      猜你喜欢
      • 2014-10-14
      • 2012-06-17
      • 2012-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-30
      • 1970-01-01
      相关资源
      最近更新 更多