好的,所以我正在创建一个推特克隆,我现在唯一的问题是回调网址让我回到应用程序,但却给了我一个找不到错误的页面。
我在stackoverflow中看到了一些类似的问题,并按照步骤进行操作。
我使用以下代码获取身份验证URL:
public String beginAuthorization(){
try{
if(null==currentRequestToken){
currentRequestToken = twitter.getOAuthRequestToken(TWITTER_CALLBACK_URL);
}
return currentRequestToken.getAuthenticationURL();
}catch (TwitterException te){
te.printStackTrace();
}
return null; }
接下来,我正在使用以下代码检索访问令牌:
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();
}
} }
我的回调网址如下所示:
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;
我还在意图过滤器中添加了回调网址,例如:
数据android:host ="回调"机器人:方案=" twitter4j-MiYAMBA"
现在我不确定问题出在哪里。
此外,控件如何流出应用程序:
运行应用程序时会启动StatusActivity,它会使用在名为YAMBAapp的Android应用程序类中定义的函数isAuthorised()检查是否设置了AccessToken,如果已定义,则开始设置布局,正在使按钮和东西可见,否则它将控件传递给函数beginAuthorization(),它启动一个名为AuthorizationActivity的Activity,它获取Authentication URL并将其传递给WebView,所有这一切都在函数onResume中完成,在此函数中我调用另一个函数setAccessToken并传递' uri'有数据使用:
uri = getIntent().getData();
setAccessToken(uri);
我已粘贴上面的setAccessToken代码。 同样在清单中我已经定义了"数据" " AuthorizationActivity"的意图过滤器中的项目而不是" StatusActivity",尽管它没有任何影响。
请帮助,我真的被困了几天了:)
答案 0 :(得分:0)
首先,当您使用默认Web浏览器启动Twitter身份验证时,一旦收到访问令牌并因此找不到页面,您将永远不会返回主应用程序,因为URL无效。
您需要的是通过您自己的应用程序使用Web视图加载身份验证,现在您可以在重定向时覆盖这里的一些功能。在这里,您需要进行最终处理并终止Web视图,这将导致控制权返回到您自己的应用程序,而不是在浏览器中找不到页面。
示例:以下是您如何设置webview机制,现在您创建了一个主题,如对话框或其他任何内容,并使用twitter auth url加载此webview,一旦用户authtenticate自己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;
}
});
我想这足以完成其余的实施。更多信息在这里'