2011-11-16 2 views
0

누군가의 벽에 게시하려면이 코드를 사용하십시오.Android로 벽에 게시하는 중 경고

try{ 
       mPrefs = getPreferences(MODE_PRIVATE); 
       String access_token = mPrefs.getString("access_token", null); 
       long expires = mPrefs.getLong("access_expires", 0); 
       facebook = new Facebook(FB_APP_ID); 
       mAsyncRunner = new AsyncFacebookRunner(facebook); 

       if(access_token != null) { 
        Log.d("ACCESS TOKEN", "Access Token != null"); 
        facebook.setAccessToken(access_token); 
       } 
       if(expires != 0) { 
        facebook.setAccessExpires(expires); 
       } 

       if(!facebook.isSessionValid()) { 
        synchronized(facebook){ 


         facebook.authorize(FBWallWriterActivity.this, new String[] {"read_stream", "publish_stream", "offline_access", "user_birthday", "friends_birthday"}, 
           new MyDialogListener()); 
        } 
       } 

       synchronized (facebook) { 

        while(mPrefs.getString("access_token", null) == null){ 

         facebook.wait(); 
        } 

        String token = mPrefs.getString("access_token", null); 
        Bundle parameters = new Bundle(); 
        JSONObject attachment = new JSONObject(); 

        try { 
         attachment.put("message", "Messages"); 

        } 
        catch (JSONException e) { 
         Log.e("FBWallWriterAct", "Error "+e.getMessage()); 

        } 

        parameters.putString("message", wallMsg.getText().toString()); 

        mAsyncRunner.request(uid+"/feed", parameters, "POST", new RequestListener(){ 

         public void onComplete(String response, Object state) { 
          Log.d("text","facebook post complete"); 

         } 

         public void onIOException(IOException e, Object state) { 
          Log.d("text","facebook post onIOException"); 
         } 

         public void onFileNotFoundException(FileNotFoundException e, Object state) { 
          Log.d("text","facebook post onFileNotFoundException"); 
         } 

         public void onMalformedURLException(MalformedURLException e, Object state) { 
          Log.d("text","facebook post onMalformedURLException"); 
         } 

         public void onFacebookError(FacebookError e, Object state) { 
          Log.d("text","facebook post error"); 
         } 

        }, null); 

       } 
      } 

메시지를 게시하려고하면 여기에서 로그를 얻습니다.

 11-16 15:59:26.289: W/Bundle(15907): <!>android.os.Bundle 775<!> Key message expected byte[] but value was a java.lang.String. The default value <null> was returned. 
11-16 15:59:26.289: W/Bundle(15907): Attempt to cast generated internal exception: 
11-16 15:59:26.289: W/Bundle(15907): java.lang.ClassCastException: java.lang.String 
11-16 15:59:26.289: W/Bundle(15907): at android.os.Bundle.getByteArray(Bundle.java:1317) 
11-16 15:59:26.289: W/Bundle(15907): at com.facebook.android.Util.openUrl(Util.java:155) 
11-16 15:59:26.289: W/Bundle(15907): at com.facebook.android.Facebook.request(Facebook.java:563) 
11-16 15:59:26.289: W/Bundle(15907): at com.facebook.android.AsyncFacebookRunner$2.run(AsyncFacebookRunner.java:253) 
11-16 15:59:26.299: W/Bundle(15907): <!>android.os.Bundle 775<!> Key access_token expected byte[] but value was a java.lang.String. The default value <null> was returned. 
11-16 15:59:26.299: W/Bundle(15907): Attempt to cast generated internal exception: 
11-16 15:59:26.299: W/Bundle(15907): java.lang.ClassCastException: java.lang.String 
11-16 15:59:26.299: W/Bundle(15907): at android.os.Bundle.getByteArray(Bundle.java:1317) 
11-16 15:59:26.299: W/Bundle(15907): at com.facebook.android.Util.openUrl(Util.java:155) 
11-16 15:59:26.299: W/Bundle(15907): at com.facebook.android.Facebook.request(Facebook.java:563) 
11-16 15:59:26.299: W/Bundle(15907): at com.facebook.android.AsyncFacebookRunner$2.run(AsyncFacebookRunner.java:253) 
11-16 15:59:26.299: W/Bundle(15907): <!>android.os.Bundle 775<!> Key format expected byte[] but value was a java.lang.String. The default value <null> was returned. 
11-16 15:59:26.299: W/Bundle(15907): Attempt to cast generated internal exception: 
11-16 15:59:26.299: W/Bundle(15907): java.lang.ClassCastException: java.lang.String 
11-16 15:59:26.299: W/Bundle(15907): at android.os.Bundle.getByteArray(Bundle.java:1317) 
11-16 15:59:26.299: W/Bundle(15907): at com.facebook.android.Util.openUrl(Util.java:155) 
11-16 15:59:26.299: W/Bundle(15907): at com.facebook.android.Facebook.request(Facebook.java:563) 
11-16 15:59:26.299: W/Bundle(15907): at com.facebook.android.AsyncFacebookRunner$2.run(AsyncFacebookRunner.java:253) 
11-16 15:59:31.009: W/Bundle(15907): <!>android.os.Bundle 775<!> Key message expected byte[] but value was a java.lang.String. The default value <null> was returned. 
11-16 15:59:31.009: W/Bundle(15907): Attempt to cast generated internal exception: 
11-16 15:59:31.009: W/Bundle(15907): java.lang.ClassCastException: java.lang.String 
11-16 15:59:31.009: W/Bundle(15907): at android.os.Bundle.getByteArray(Bundle.java:1317) 
11-16 15:59:31.009: W/Bundle(15907): at com.facebook.android.Util.encodePostBody(Util.java:63) 
11-16 15:59:31.009: W/Bundle(15907): at com.facebook.android.Util.openUrl(Util.java:182) 
11-16 15:59:31.009: W/Bundle(15907): at com.facebook.android.Facebook.request(Facebook.java:563) 
11-16 15:59:31.009: W/Bundle(15907): at com.facebook.android.AsyncFacebookRunner$2.run(AsyncFacebookRunner.java:253) 
11-16 15:59:31.009: W/Bundle(15907): <!>android.os.Bundle 775<!> Key method expected byte[] but value was a java.lang.String. The default value <null> was returned. 
11-16 15:59:31.009: W/Bundle(15907): Attempt to cast generated internal exception: 
11-16 15:59:31.009: W/Bundle(15907): java.lang.ClassCastException: java.lang.String 
11-16 15:59:31.009: W/Bundle(15907): at android.os.Bundle.getByteArray(Bundle.java:1317) 
11-16 15:59:31.009: W/Bundle(15907): at com.facebook.android.Util.encodePostBody(Util.java:63) 
11-16 15:59:31.009: W/Bundle(15907): at com.facebook.android.Util.openUrl(Util.java:182) 
11-16 15:59:31.009: W/Bundle(15907): at com.facebook.android.Facebook.request(Facebook.java:563) 
11-16 15:59:31.009: W/Bundle(15907): at com.facebook.android.AsyncFacebookRunner$2.run(AsyncFacebookRunner.java:253) 
11-16 15:59:31.009: W/Bundle(15907): <!>android.os.Bundle 775<!> Key access_token expected byte[] but value was a java.lang.String. The default value <null> was returned. 
11-16 15:59:31.009: W/Bundle(15907): Attempt to cast generated internal exception: 
11-16 15:59:31.009: W/Bundle(15907): java.lang.ClassCastException: java.lang.String 
11-16 15:59:31.009: W/Bundle(15907): at android.os.Bundle.getByteArray(Bundle.java:1317) 
11-16 15:59:31.009: W/Bundle(15907): at com.facebook.android.Util.encodePostBody(Util.java:63) 
11-16 15:59:31.009: W/Bundle(15907): at com.facebook.android.Util.openUrl(Util.java:182) 
11-16 15:59:31.009: W/Bundle(15907): at com.facebook.android.Facebook.request(Facebook.java:563) 
11-16 15:59:31.009: W/Bundle(15907): at com.facebook.android.AsyncFacebookRunner$2.run(AsyncFacebookRunner.java:253) 
11-16 15:59:31.019: W/Bundle(15907): <!>android.os.Bundle 775<!> Key format expected byte[] but value was a java.lang.String. The default value <null> was returned. 
11-16 15:59:31.019: W/Bundle(15907): Attempt to cast generated internal exception: 
11-16 15:59:31.019: W/Bundle(15907): java.lang.ClassCastException: java.lang.String 
11-16 15:59:31.019: W/Bundle(15907): at android.os.Bundle.getByteArray(Bundle.java:1317) 
11-16 15:59:31.019: W/Bundle(15907): at com.facebook.android.Util.encodePostBody(Util.java:63) 
11-16 15:59:31.019: W/Bundle(15907): at com.facebook.android.Util.openUrl(Util.java:182) 
11-16 15:59:31.019: W/Bundle(15907): at com.facebook.android.Facebook.request(Facebook.java:563) 
11-16 15:59:31.019: W/Bundle(15907): at com.facebook.android.AsyncFacebookRunner$2.run(AsyncFacebookRunner.java:253) 
11-16 15:59:34.079: D/text(15907): <!>com.ozzem.mybirthday.FBWallWriterActivity$1$1 128<!> facebook post complete 

은 보통입니까?

답변

1

요청을 수행 할 때 매개 변수로 byte [] 배열을 전달해야하지만 String 개체를 매개 변수로 전달하면 호환되지 않는 매개 변수 전달으로 이어지고 경고로 이어지고 값을 null로 만듭니다. 예외.

+0

확인 ... 내가 \t \t \t \t \t \t parameters.putByteArray에게 '를 사용하려고했습니다 (.. "메시지", wallMsg.getText을의 toString()()를 getBytes()); ' 하지만 보낸 메시지는 비어 있으며 경고 메시지가 계속 나타납니다. –

+0

그건 상대가 아닙니다. 토큰, 키 등의 매개 변수는 String이 아닌 byte []로 정의해야합니다. –

+0

그래서 ... getBytes를 사용할 수없고 putByteArray를 통해 매개 변수를 전달할 수 있습니까? 이 경우 어떻게해야합니까? –