Android Facebook SDK 和 URL 方法形成成功的好友对话框,但无法提交
Posted
技术标签:
【中文标题】Android Facebook SDK 和 URL 方法形成成功的好友对话框,但无法提交【英文标题】:Android Facebook SDK and URL Methods form successful Friends Dialog, but cannot commit 【发布时间】:2013-12-06 08:00:24 【问题描述】:我开始认为这是一个错误,请证明我错了:
我想以编程方式在 Facebook 上与用户交朋友;他们只是而且最肯定的是这个人认识 IRL 的人。
以下三种解决方案都具有相同的结果:成功的朋友对话-意味着个人资料名称、图片、指示操作的声明(给某人加好友)和拒绝/确认按钮;按下“确认”是问题所在:它会导致标准 fb UI 中出现 Facebook 错误,上面写着“抱歉,出了点问题,我们正在努力尽快解决这个问题”。我的用户已登录并且 fb 应用程序 id ( fb_app_id ) 是黄金,或者片段的父活动将不会被调用,我的待加好友用户 id ( Id ) 也是黄金,他们的个人资料图片都显示在我的应用程序和朋友对话框中,“朋友/”操作是正确的——“朋友/?”给了我一个很好的“未找到”错误——而且 OnCompleteListener 即使在消息周围也能正常工作。
第一种方法是使用 SDK,如果可行,我更喜欢:
Bundle params = new Bundle( );
params.putString( "id", Id );
WebDialog requestsDialog = (
new WebDialog.Builder( this.getActivity( ),
getString( R.string.fb_app_id ),
"friends/", params )
.setOnCompleteListener( new CompleteListener( ) )
.build( ) );
requestsDialog.show( );
保存显式操作调用,看起来不错,不是吗?它肯定让我进入确认对话框;第二种方法又快又脏,但它应该可以工作:
String requestUrl = "https://www.facebook.com/dialog/friends/?id="+
Id+"&app_id="+getString( R.string.fb_app_id )+
"&redirect_uri=http://www.facebook.com";
WebDialog requestDialog = new WebDialog( this.getActivity( ), requestUrl );
requestDialog.show( );
但事实并非如此;同样的准成功结果。第三种方法是我只是检查以确保我不是白痴,本质上是这篇文章中的建议 Facebook friends dialog returns "Unknown method" error 但是使用 WebDialogs (我的 OnCompleteListener 实现)而不是弃用的库。 同样的事情,同样的信息。
这并不是 /for/ me 的真正错误消息,你知道吗?这是一个已弃用的 API 调用吗?错误信息真的正确吗,fb 的好人都知道这一点吗?我在这里实际上缺少一些参数吗?这不像他们没有登录!我对此一无所知,在此先感谢您的帮助/建议/平静的话。 -AnB
附:当你把它写出来时,“friended”看起来真的很有趣。乙
【问题讨论】:
【参考方案1】:所以,它 是 facebook 上的一个错误,他们知道,并且他们不会很快修复一个错误(开发人员短缺?“战略”?我'我会问马克......)。 听到这个令人失望的消息后,我用几种不同的方式尝试了 chrome 中的 url,结果让我大吃一惊:当您在确认屏幕上请求桌面站点时,它工作正常。
所以,留给我们移动开发者的方法之一就是创建一个对话框,用
-
一个看似桌面的用户代理
一个 URL 覆盖,以阻止 fb 网站通过 Intent.ACTION_VIEW 重定向
这是我的实现(在片段中):
private void sendRequestDialog( )
String requestUri = "https://www.facebook.com/dialog/friends/?id="+
Id+"&app_id="+getString(R.string.fb_app_id)+
"&redirect_uri=http://www.facebook.com";
WebView webView = new WebView(this.getActivity());
webView.getSettings().setUserAgentString(getString("Mozilla/5.0 (X11; Linux x86_64; rv:10.0) Gecko/20100101 Firefox/10.0"));
webView.setWebViewClient(new WebViewClient()
public boolean shouldOverrideUrlLoading(WebView view, String url)
return false;
);
webView.loadUrl(requestUri);
AlertDialog.Builder dialog = new AlertDialog.Builder(this.getActivity());
dialog.setView(webView);
dialog.setPositiveButton("Done", new DialogInterface.OnClickListener()
public void onClick(DialogInterface dialog, int which)
dialog.dismiss();
);
dialog.show();
当然,您会想要对这些字符串进行引用,但这很有效,并且在 UI 中看起来不错。
继续! -AnB
【讨论】:
以上是关于Android Facebook SDK 和 URL 方法形成成功的好友对话框,但无法提交的主要内容,如果未能解决你的问题,请参考以下文章
使用 Facebook SDK Login (iOs/Android) 登录 Facebook @ Web?
添加 Facebook sdk 和 Google Firebase sdk 时的 Android Proguard 问题(重复)