一切都运行正常,直到我想检查如果用户点击没有互联网连接的Facebook登录按钮会发生什么.
祝酒词出现了:
登录失败.请联系该应用程序的制造商,并要求他们向Facebook报告问题#1118578.
在logcat我有:
D/Facebook-authorize(2824):用户取消登录.
我试图摆脱这个吐司并在onCancel()方法中显示我自己的错误消息- 但我找不到禁用该吐司的方法.当我再次启用WiFi时,单点登录不再有效!
可能是什么原因造成的?
private void fbLogin() {
facebook.authorize(this, new String[] { "email" }, new DialogListener() {
@Override
public void onComplete(Bundle values) {
app.save("fb_token", facebook.getAccessToken());
app.save("fb_expire", facebook.getAccessExpires());
mAsyncRunner.request("me", new meRequestListener());
}
@Override
public void onFacebookError(FacebookError error) {}
@Override
public void onError(DialogError e) {}
@Override
public void onCancel() {}
});
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
facebook.authorizeCallback(requestCode, resultCode, data);
}
Run Code Online (Sandbox Code Playgroud)
编辑:
要回答我自己的问题,请android:launchMode="singleInstance"从<activity>解决了#1118578问题的清单中删除.
但是,我确实需要android:launchMode="singleInstance"Twitter OAuth登录,因为浏览器通过新的Intent将数据传回活动.如果我没有android:launchMode="singleInstance"在清单中提供,则会启动新活动,但不会收到OAuth验证程序.
有没有办法解决这个问题,在同一个活动中使用Facebook和Twitter登录?
我想到的唯一解决方案是使用Twitter4j的虚拟活动singleInstance.
小智 2
我解决这个问题的方法是更改 twitter 中的回调,从“twitter://callback”更改为“http://localhost/callback”,并从显现。
我仍然可以在 WebView 中获得响应(而不是像以前那样在 onResume() 上获得响应):
yourwebview.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
// your_callback == http://localhost/callback
if(url == null || !url.startsWith(your_callback))
return;
Uri uri = Uri.parse(url);
String ov = uri.getQueryParameter("oauth_verifier");
AccessToken at = null;
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5654 次 |
| 最近记录: |