12

我在我的应用程序中使用解析SDK(https://github.com/ParsePlatform/Parse-SDK-Android)。解析SDK Android - Facebook图形API v2.0

我的应用程序也使用了Facebook的Utils以提供与Facebook的登录体验(https://github.com/ParsePlatform/ParseFacebookUtils-Android

最近,我收到了来自Facebook的开发者关于我的应用程序之一以下消息:“XXX一直在最近调用Graph API v2.0的API调用将于2016年8月8日星期一到达2年停用时段的结尾。请将所有调用迁移到v2.1或更高版本,以避免潜在的破坏体验。“

我该如何解决这个问题?

这是依赖条件部分我的build.gradle文件:

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    testCompile 'junit:junit:4.12' 
    compile 'com.parse:parse-android:1.13.1' 
    compile 'com.parse:parsefacebookutils-v4-android:[email protected]' 
    compile 'com.parse.bolts:bolts-tasks:1.4.0' 
    compile 'com.parse.bolts:bolts-applinks:1.4.0' 
    compile 'com.jeremyfeinstein.slidingmenu:library:[email protected]' 
    compile 'com.soundcloud.android:android-crop:[email protected]' 
    compile 'com.facebook.android:facebook-android-sdk:4.+' 
    compile files('libs/universal-image-loader-1.9.3.jar') 

} 

,这是在代码中唯一的地步,我使用Facebook SDK:

ParseFacebookUtils.logInWithReadPermissionsInBackground(Login.this, permissions, new LogInCallback() { 
       @Override 
       public void done(final ParseUser user, ParseException err) { 

        fbdialog = new ProgressDialog(Login.this); 
        fbdialog.setTitle("Contacting Facebook"); 
        fbdialog.setMessage("Please wait a moment. We are contacting Facebook to perform the registration"); 
        fbdialog.show(); 

        if (user == null) { 
         Log.d("MyApp", "Uh oh. The user cancelled the Facebook login."); 
         fbdialog.cancel(); 

        } else if (user.isNew() || !user.isNew()) { 
         Log.d("MyApp", "User signed up and logged in through Facebook!" + AccessToken.getCurrentAccessToken()); 

         GraphRequest request = GraphRequest.newMeRequest(
           AccessToken.getCurrentAccessToken(), 
           new GraphRequest.GraphJSONObjectCallback() { 
            @Override 
            public void onCompleted(
              JSONObject object, 
              GraphResponse response) { 

             if(response!=null) { 

              try { 
               String nome = object.getString("name"); 
               String email = object.getString("email"); 
               String gender = object.getString("gender"); 

               final String facebookid = object.getString("id"); 

               ParseUser utente = ParseUser.getCurrentUser(); 

               utente.put("namelastname", nome); 
               utente.put("email", email); 
               utente.put("gender", gender); 

               utente.saveInBackground(new SaveCallback() { 
                @Override 
                public void done(ParseException e) { 

                 if (e == null) { 
                  ParseInstallation installation = ParseInstallation.getCurrentInstallation(); 
                  installation.put("idutente", user); 
                  installation.saveInBackground(); 

                  //downloading the user profile image from facebook 
                  AsyncTaskLoad as = new AsyncTaskLoad(); 
                  as.execute("https://graph.facebook.com/" + facebookid + "/picture?type=large"); 

                  fbdialog.cancel(); 

                 } else { 

                  fbdialog.cancel(); 

                  e.printStackTrace(); 


                 } 
                } 
               }); 


              } catch (JSONException e) { 
               e.printStackTrace(); 
              } 
             } 
            } 
           }); 

         Bundle parameters = new Bundle(); 
         parameters.putString("fields", "id,name,link,email,age_range,gender,birthday"); 
         request.setParameters(parameters); 
         request.executeAsync(); 


        } else { 

         Log.d("MyApp", "User logged in through Facebook!"); 

         ParseInstallation installation = ParseInstallation.getCurrentInstallation(); 
         installation.put("idutente", user); 
         installation.saveInBackground(); 

         fbdialog.cancel(); 

         //here I start a new activity 

        } 
       } 
      }); 

     } 

    });  

这是使用的AsyncTask要下载Facebook个人资料图片:

private class AsyncTaskLoad extends AsyncTask<String, Void, Void> { 
    @Override 
    protected void onPreExecute() { 

     pd = new ProgressDialog(Login.this); 
     pd.setTitle("Logging"); 
     pd.show(); 
    } 

    @Override 
    protected Void doInBackground(String... strings) { 

     try { 
      URL image_value = new URL(strings[0]); 
      SynchroHelper sync = new SynchroHelper(Login.this); 
      //simple http method to download an image and save it into a file in the external storage dir 
      sync.downloadImage(image_value.toString(), "myprof.jpg", Environment.getExternalStorageDirectory()); 

     } catch (MalformedURLException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     return null; 

    } 

    @Override 
    protected void onPostExecute(Void params) { 

     //starting a new activity... 
     pd.dismiss(); 

    } 

} 

我该如何升级到Graph API v2.0?我应该等待Parse-SDK的更新吗?

+0

我也收到这封电子邮件,我不知道如何解决它。 – Josh

回答

2

这似乎是一个错误。 A bug report已填写,目前正在调查中。

2

fb docs。 我没有在你的代码中看到,您指定的图形版本,以便:

未版本控制的通话将默认使用API​​的最早的可用版本。未受版权保护的通话将始终指向图表顶部仍可用的最旧版本。这是目前V2.0,但两年后,这将是V2.1,V2.2,然后等

在这里,你有更多的inforamtion约graph version