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?

Android facebook sdk 分页

添加 Facebook sdk 和 Google Firebase sdk 时的 Android Proguard 问题(重复)

Android:facebook sdk注销问题?

Android Facebook sdk 覆盖登录按钮

Facebook SDK 电子邮件和性别在 android 中为 Null