【问题标题】:Response code 200 from facebook来自 Facebook 的响应代码 200
【发布时间】:2017-12-10 05:53:03
【问题描述】:

我正在开发使用 facebook sdk 的新 android 应用程序。我想获取用户好友列表,我是这样做的:

Request request = Request.newMyFriendsRequest(
                        Session.getActiveSession(),
                        new Request.GraphUserListCallback() {
                            public void onCompleted(List<GraphUser> paramAnonymousList,
                                    Response paramAnonymousResponse) {
                                Toast.makeText(getApplicationContext(),
                                        paramAnonymousList.toString(),
                                        Toast.LENGTH_SHORT).show();
                                Log.e(TAG, paramAnonymousList.toString()
                                        + paramAnonymousResponse.toString());
                            }
                        });
                request.executeAsync();

但是,当我运行应用程序时,我得到了类似的东西:

GraphObjectList{itemType=GraphUser, state=[]}{Response: responseCode: 200, graphObject: GraphObject{graphObjectClass=GraphObject, state={"data":[]}}, error: null, isFromCache:false}

我尝试在未处于开发模式的应用程序中运行此代码,并且运行良好 - 我能够获取用户的数据。响应代码 200 的原因可能是什么。据此:https://developers.facebook.com/docs/graph-api/using-graph-api/v2.0 响应代码 200 属于 facebook 权限错误。但是要获取用户的好友列表,我不需要提供任何特定权限,那么导致此响应的原因是什么?

提前致谢

【问题讨论】:

    标签: android facebook-graph-api response facebook-android-sdk


    【解决方案1】:

    HTTP 200 表示您的请求正常。

    真正的问题是 Facebook API v2.0。应用程序无法检索用户的完整朋友列表,只能检索已在使用该应用程序的朋友。即使您的应用程序仍处于 v1.0 中,5 月 1 日之后首次登录的用户也会获得 v2.0 行为。

    参考:https://developers.facebook.com/docs/graph-api/reference/v2.0/user/friends

    干杯!

    【讨论】:

    • 感谢您的回答,但只是为了 100% 确定 - 没有任何解决方案可以检索完整的联系人列表吗?即使我请求了指定的权限?我在 android 上看到了可以获取完整联系人列表的应用
    • 正如我告诉您的,如果您在 5 月 1 日之前授予该应用程序的权限,则该应用程序(并且一直到 2015 年 5 月)能够检索您的完整朋友列表。但是在该日期之后授予应用程序权限的人将获得新的 v2.0 限制,以限制已经在使用该应用程序的朋友列表。该权限是允许访问该有限列表(user_friends 尚未在基本权限中隐含询问)。
    • 总结 facebook 很烂 ;)
    【解决方案2】:

    我已经这样做了,并且在 Facebook SDK 4.18.0 中完美运行

    public class SignIn extends AppCompatActivity {
    
        CallbackManager callbackManager;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            //before set conteview
            FacebookSdk.sdkInitialize(getApplicationContext());
            //  AppEventsLogger.activateApp(this);
            callbackManager = CallbackManager.Factory.create();
            setContentView(R.layout.activity_signin);
    
            LoginButton loginButton = (LoginButton) findViewById(R.id.login_button);
    
            loginButton.setReadPermissions(Arrays.asList("public_profile", "email"));
    
            loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
                @Override
                public void onSuccess(LoginResult loginResult) {
    
                    GraphRequest graphRequest=GraphRequest.newMeRequest(loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
                        @Override
                        public void onCompleted(JSONObject jsonObject, GraphResponse graphResponse) {
    
                            Log.d("Graph Response",graphResponse.toString());
    
                            String myCustomizedResponse = graphResponse.getJSONObject().toString();
    
                            Log.d("Ketan_Ramani",graphResponse.getJSONObject().toString());
    
                            try {
                                JSONObject obj = new JSONObject(myCustomizedResponse);
    
                                String id = obj.getString("id");
                                String first_name = obj.getString("first_name");
                                String last_name = obj.getString("last_name");
                                String email = obj.getString("email");
    
                                Log.d("Id",id);
                                Log.d("FirstName",first_name);
                                Log.d("LastName",last_name);
                                Log.d("Email",email);
    
                            } catch (JSONException e) {
                                Utils.hide_dialog();
    
                                e.printStackTrace();
                            }
                        }
                    });
    
                    Bundle parameters = new Bundle();
                    parameters.putString("fields", "id,name,first_name,last_name,email");
                    graphRequest.setParameters(parameters);
                    graphRequest.executeAsync();
                }
    
                @Override
                public void onCancel() {
                    // App code
                }
    
                @Override
                public void onError(FacebookException exception) {
                    // App code
                }
            });
        }
    
        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
            callbackManager.onActivityResult(requestCode, resultCode, data);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2015-01-07
      • 1970-01-01
      • 1970-01-01
      • 2018-05-16
      • 2014-09-21
      • 1970-01-01
      • 1970-01-01
      • 2013-09-08
      • 1970-01-01
      相关资源
      最近更新 更多