Twitter认证后的CallBack
我正在尝试将twitter集成到我的应用程序中,但我似乎无法让它工作。
这是我的代码:
public class OAuthForTwitter extends Activity { private CommonsHttpOAuthConsumer httpOauthConsumer; private OAuthProvider httpOauthprovider; public final static String consumerKey = "xxxxxxxxxxxxxx"; public final static String consumerSecret = "xxxxxxxxxxxx"; private final String CALLBACKURL = "sosInternational:///HierBenIkNu"; private Twitter twitter; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); doOAuth(); } /** * Opens the browser using signpost jar with application specific * consumerkey and consumerSecret. */ private void doOAuth() { try { httpOauthConsumer = new CommonsHttpOAuthConsumer(consumerKey, consumerSecret); httpOauthprovider = new DefaultOAuthProvider( "http://twitter.com/oauth/request_token", "http://twitter.com/oauth/access_token", "http://twitter.com/oauth/authorize"); String authUrl = httpOauthprovider.retrieveRequestToken(httpOauthConsumer, CALLBACKURL); this.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(authUrl))); } catch (Exception e) { Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show(); } } @Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); Uri uri = intent.getData(); if (uri != null && uri.toString().startsWith(CALLBACKURL)) { String verifier = uri .getQueryParameter(oauth.signpost.OAuth.OAUTH_VERIFIER); try { // this will populate token and token_secret in consumer httpOauthprovider.retrieveAccessToken(httpOauthConsumer, verifier); // TODO: you might want to store token and token_secret in you // app settings!!!!!!!! AccessToken a = new AccessToken(httpOauthConsumer.getToken(), httpOauthConsumer.getTokenSecret()); // initialize Twitter4J twitter = new TwitterFactory().getInstance(); twitter.setOAuthConsumer(consumerKey, consumerSecret); twitter.setOAuthAccessToken(a); // create a tweet Date d = new Date(System.currentTimeMillis()); String tweet = "#OAuth working! " + d.toLocaleString(); // send the tweet twitter.updateStatus(tweet); } catch (Exception e) { Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show(); } } } }
当我在Twitter网站上完成身份validation时,它应该将我重定向回应用程序。
但相反,我找不到这个页面:
我的AndroidManifest中有这个:
如何使用我回来的钥匙回到我的应用程序?
好吧,这是一个非常愚蠢的错误。
我的
不在应用程序中..
这是现在的样子:
这种关闭工作,它只是从一开始就加载整个应用程序。
在没有重新启动整个应用程序的情况下,是否有办法“回到”最后一个活动?
我解决了这个问题。 不完全是你开发的方式,但略有不同。 以下是描述我所做的步骤。
-
使用webview而不是在Web浏览器中打开它:这样做的一个关键优势是,您可以跟踪url重定向。
-
调用webview的
shouldOverrideUrlLoading
方法并覆盖你的类的shouldOverrideUrlLoading
方法,我已经使用了内部类。 -
您的方法中将包含url参数。 检查它是否以您自己的回调URL开头,(注意:此URL包含授权所需的用户令牌和用户密码)。
-
完成任务后,您可以隐藏活动或删除webView或任何您想要的内容。
编辑 :这是Web应用程序中常用的oAuth方式,因此我们不需要xAuth方式。 (如果其他社区成员不知道)
希望它会对你有所帮助。
您的回调URL应该是Java代码中的“sosInternational:// HierBenIkNu”(而不是“sosInternational:/// HierBenIkNu”)。
private final String CALLBACKURL = "sosInternational://HierBenIkNu";
- 如何为所有Android设备创建通用的相机动作
- Android:通过RTP(G.711 PCMU)将.wav发送到SIP-Phone非常嘈杂,基于SipDroid / MjSIP的噼啪声
- 试图运行琐碎的Android JUnit测试。 获得:“测试运行失败:没有测试结果”我缺少什么?
- Android:java.lang.Enum类型无法解析
- Android – Paho Mqtt客户端在网络连接更改后不会收到消息(移动数据已禁用并再次启用)
- 为什么我无法读取只读文件?
- 如何在应用程序外部显示AlertDialog框?
- Android 4.4.2仅在完整Java代码动画期间在视图对象边界外创建黑色蒙版
- android使用外部java lib时获取java langvalidation错误