繁体   English   中英

Android Facebook图形API,JSONException没有照片值

[英]Android Facebook graph api, JSONException No value for photos

我正在尝试从Facebook图形api获取用户照片的列表,但我不断收到错误消息:

JSONException No value for photos

我已经搜索了所有其他可用答案,并尝试了所有建议,但无法找到导致错误的原因。

这是我用来获取照片的功能:

public void getUserPhotos(){
        GraphRequest request = GraphRequest.newMeRequest(
                AccessToken.getCurrentAccessToken(),
                new GraphRequest.GraphJSONObjectCallback() {
                    @Override
                    public void onCompleted(
                            JSONObject object,
                            GraphResponse response) {
                        try {
                            //This contains all the photos with array data>>link
                            JSONObject photosobject = object.getJSONObject("photos");

                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                    }
                });
        Bundle parameters = new Bundle();
        parameters.putString("fields", "photos{link}");
        request.setParameters(parameters);
        request.executeAsync();
    }

我创建了一个测试用户,并确保他们具有正确的权限。 现在登录正常,我可以为用户提供公共信息。

我认为这可能是权限问题,所以我运行了此命令:

String permissions = AccessToken.getCurrentAccessToken().getPermissions().toString();
System.out.println(permissions);

记录的响应为:

[public_profile, user_friends, user_photos]

因此,这不是许可问题。

我登录到该用户并添加了照片,因此也不应该成为问题。

我已经看到一些示例使用"photos{link}"作为字段,而其他示例使用"images"

"photos{link}"给了我这个错误:

12-28 22:34:23.991 9199-9199/com.amazon.mysampleapp W/System.err: org.json.JSONException: No value for photos
12-28 22:34:23.991 9199-9199/com.amazon.mysampleapp W/System.err:     at org.json.JSONObject.get(JSONObject.java:389)
12-28 22:34:23.991 9199-9199/com.amazon.mysampleapp W/System.err:     at org.json.JSONObject.getJSONObject(JSONObject.java:609)
12-28 22:34:23.991 9199-9199/com.amazon.mysampleapp W/System.err:     at com.mysampleapp.Fragments.ProfileFragment$1.onCompleted(ProfileFragment.java:294)
12-28 22:34:23.991 9199-9199/com.amazon.mysampleapp W/System.err:     at com.facebook.GraphRequest$1.onCompleted(GraphRequest.java:304)
12-28 22:34:23.991 9199-9199/com.amazon.mysampleapp W/System.err:     at com.facebook.GraphRequest$5.run(GraphRequest.java:1368)
12-28 22:34:23.991 9199-9199/com.amazon.mysampleapp W/System.err:     at android.os.Handler.handleCallback(Handler.java:751)
12-28 22:34:23.992 9199-9199/com.amazon.mysampleapp W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:95)
12-28 22:34:23.992 9199-9199/com.amazon.mysampleapp W/System.err:     at android.os.Looper.loop(Looper.java:154)
12-28 22:34:23.992 9199-9199/com.amazon.mysampleapp W/System.err:     at android.app.ActivityThread.main(ActivityThread.java:6077)
12-28 22:34:23.992 9199-9199/com.amazon.mysampleapp W/System.err:     at java.lang.reflect.Method.invoke(Native Method)
12-28 22:34:23.992 9199-9199/com.amazon.mysampleapp W/System.err:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
12-28 22:34:23.992 9199-9199/com.amazon.mysampleapp W/System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)

"images"字段仅返回空指针异常。

我查看了grapi api文档,发现了这一点:

/ me节点是一个特殊的终结点,它转换为当前使用其访问令牌进行API调用的人员的user_id(或Facebook页面的page_id)。 如果您具有用户访问令牌,则可以使用以下方法检索用户的所有照片:

获取graph.facebook.com / me / photos

这似乎是正确的,并且我正在运行我的请求,所以我不确定我在做什么错。

在此先感谢您的帮助。

mainActivity.java

   btnLogin.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {

        @Override
        public void onSuccess(LoginResult loginResult) {
            GraphRequest request = GraphRequest.newMeRequest(
                    loginResult.getAccessToken(),
                    new GraphRequest.GraphJSONObjectCallback() {

                        @Override
                        public void onCompleted(JSONObject object, GraphResponse response) {
                            Log.v("Main", response.toString());
                            setProfileToView(object);
                        }
                    });
            Bundle parameters = new Bundle();
            parameters.putString("fields", "id,name,email,gender, birthday");
            request.setParameters(parameters);
            request.executeAsync();
        }


 public void showCustomDialog(JSONObject jsonObject)
{
     final Dialog dialog = new Dialog(MainActivity.this);
    dialog.setContentView(R.layout.facebookdetails);
    dialog.setTitle("Facebook Details");
    email = (TextView)dialog.findViewById(R.id.email);
    facebookName = (TextView) dialog.findViewById(R.id.name);
    gender = (TextView) dialog.findViewById(R.id.gender);
    infoLayout = (LinearLayout) dialog.findViewById(R.id.layout_info);
    profilePictureView = (ProfilePictureView)dialog. findViewById(R.id.imageprofile);
    DateofBirth= (TextView)dialog. findViewById(R.id.dob);
    showProgressDialog();
    try {
        disconnectFromFacebook();
        if(jsonObject.has("birthday"))
        {
            DateofBirth.setText(jsonObject.getString("birthday"));

        }
        if(jsonObject.has("email")){
            email.setText(jsonObject.getString("email"));

        }
        if(jsonObject.has("gender")||jsonObject.has("name")) {
            gender.setText(jsonObject.getString("gender"));
            facebookName.setText(jsonObject.getString("name"));
        }
        profilePictureView.setPresetSize(ProfilePictureView.NORMAL);
        profilePictureView.setProfileId(jsonObject.getString("id"));
        infoLayout.setVisibility(View.VISIBLE);
        mProgressDialog.dismiss();
    } catch (JSONException e) {
        e.printStackTrace();
    }
    dialog.show();
    Button dialogButton = (Button) dialog.findViewById(R.id.dialogButtonOK);
    // if button is clicked, close the custom dialog
    dialogButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            dialog.dismiss();
        }
    });

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM