2013-06-05 15 views
0

我創建了一個需要將狀態自動發佈到Facebook牆上的應用程序。Android中的Face Book 3.0

我已成功啓用使用SDK 3.0的登錄/註銷會話。我正在嘗試通過按下按鈕在我的牆上張貼狀態。

我試過如下:

Facebook Publish to feed

我沒能發表。點擊發布到牆上按鈕(我已經創建)後 - 幾秒鐘後,我會看到一個帶有進度條的新屏幕,它會返回主屏幕。我的牆上沒有任何更新。

UPDATE

如果我禁用:

if (!isSubsetOf(PERMISSIONS, permissions)) { 
     pendingPublishReauthorization = true; 
     Session.NewPermissionsRequest newPermissionsRequest = new Session 
       .NewPermissionsRequest(this, PERMISSIONS); 
    session.requestNewPublishPermissions(newPermissionsRequest); 
     return; 
    } 

的這部分代碼。我可以發佈消息。如果我做到了。這隻適用於我的手機不在不同的手機上。我如何解決這個問題?

更新-2:

後我評論回報的一部分 - 我得到的力接近,但我得到許可對話框。

這裏是錯誤,它是指向:

的JSONObject graphResponse = response.getGraphObject()getInnerJSONObject();

以下是錯誤: 12月6日至5日:50:43.932:E/AndroidRuntime(21933):致命異常:主 12月6日至5日:50:43.932:E/AndroidRuntime(21933):java.lang中.NullPointerException 06-05 12:50:43.932:E/AndroidRuntime(21933):at com.test.fbtest.Sessionvalid $ 1.onCompleted(Sessionvalid.java:216) 06-05 12:50:43.932:E/AndroidRuntime (21933):at com.facebook.Request $ 4.run(Request.java:1240) 06-05 12:50:43.932:E/AndroidRuntime(21933):at android.os.Handler.handleCallback(Handler.java: 725) 06-05 12:50:43.932:E/AndroidRuntime(21933):at android.os.Handler.dispatchMessage(Handler.java:92) 06-05 12:50:43.932:E/AndroidRuntime(21933) :在android.os.Looper.loop(Looper.java:1 37) 06-05 12:50:43.932:E/AndroidRuntime(21933):at android.app.ActivityThread.main(ActivityThread.java:5041) 06-05 12:50:43.932:E/AndroidRuntime(21933) :at java.lang.reflect.Method.invokeNative(Native Method) 06-05 12:50:43.932:E/AndroidRuntime(21933):at java.lang.reflect.Method.invoke(Method.java:511) 06-05 12:50:43.932:E/AndroidRuntime(21933):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:793) 06-05 12:50:43.932:E/AndroidRuntime (21933):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 06-05 12:50:43.932:E/AndroidRuntime(21933):at dalvik.system.NativeStart.main(Native方法)

不知道爲什麼我應該在那裏得到一個錯誤?

回答

1

刪除return statement.it適用於我。

if (!isSubsetOf(PERMISSIONS, permissions)) { 
     pendingPublishReauthorization = true; 
     Session.NewPermissionsRequest newPermissionsRequest = new Session 
       .NewPermissionsRequest(this, PERMISSIONS); 
    session.requestNewPublishPermissions(newPermissionsRequest); 
     'remove return statement=>' return; 
    } 

工作樣本,

private void publishStory() 
     { 


List<String> PERMISSIONS = Arrays.asList("publish_actions"); 
      Session session = Session.getActiveSession(); 

      if (session != null) 
       { 

        // Check for publish permissions 
        List<String> permissions = session.getPermissions(); 
        if (!isSubsetOf(PERMISSIONS, permissions)) 
         { 
          Session.NewPermissionsRequest newPermissionsRequest = new Session.NewPermissionsRequest(this, PERMISSIONS); 
          session.requestNewPublishPermissions(newPermissionsRequest); 
         } 

        Bundle postParams = new Bundle(); 
        postParams.putString("name", "Sample google for for Android"); 
        postParams.putString("caption", "world of data"); 
        postParams.putString("description","Various religios music, chants, mantras, christian songs, islamic music, quran and more."); 
        postParams.putString("link", "http://www.google.com/"); 
        postParams.putString("picture", "http://www.userlogos.org/files/logos/veinedstorm/raaga.png"); 

        Request.Callback callback = new Request.Callback() 
         { 
          public void onCompleted(Response response) 
           { 
            JSONObject graphResponse = response.getGraphObject().getInnerJSONObject(); 
            String postId = null; 
            try 
             { 
              postId = graphResponse.getString("id"); 
             } 
            catch (JSONException e) 
             { 
              Log.i("JSON", "JSON error " + e.getMessage()); 
             } 
            FacebookRequestError error = response.getError(); 
            Log.e("post response",response.toString()); 
            if (error != null) 
             { 
              Toast.makeText(checkAndPostActivity.this, error.getErrorMessage(), Toast.LENGTH_SHORT) 
                .show(); 
             } 
            else 
             { 
              Toast.makeText(checkAndPostActivity.this, postId, Toast.LENGTH_LONG).show(); 
             } 
           } 
         }; 

        Request request = new Request(session, "me/feed", postParams, HttpMethod.POST, callback); 

        RequestAsyncTask task = new RequestAsyncTask(request); 
        task.execute(); 
       } 

     } 



private boolean isSubsetOf(Collection<String> subset, Collection<String> superset) 
     { 
      for (String string : subset) 
       { 
        if (!superset.contains(string)) 
         { 
          return false; 
         } 
       } 
      return true; 
     } 
+0

沒有工作。我接近力量。 :( - 空指針異常..關於PERMISSIONS代碼做什麼的任何想法? – TheDevMan

+0

權限允許我們讀和寫(讀和後)。當我們創建沒有任何權限的Facebook會話時,默認情況下它的用戶「讀取權限」 。但要張貼在Facebook上,我們必須明確給「寫權限」。這裏issubset()函數檢查寫權限 – dd619

+0

明白了..所以返回部分必須啓用orelse它不會正常工作嗎? – TheDevMan