0
我試圖在我的android設備上運行Facebook應用程序。該應用程序是一個簡單的發佈按鈕。在仿真器中運行正常,但在設備中,在調試模式(eclipse)中捕獲到以下消息。當我在Android設備上運行它時,facebook應用程序會生成錯誤代碼'100'
error message: {"error":{"message":"(#100) Missing message or attachment","type":"OAuthException","code":100}}
有人知道怎麼回事? thx!
我的活動的代碼如下
package f.b;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.MalformedURLException;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
import com.facebook.android.AsyncFacebookRunner.RequestListener;
import com.facebook.android.DialogError;
import com.facebook.android.Facebook;
import com.facebook.android.Facebook.DialogListener;
import com.facebook.android.FacebookError;
import com.facebook.android.AsyncFacebookRunner;
public class NewFaceAppActivity extends Activity {
private final String id = "";//my id here
private final String [] permissoes = {"publish_stream"};
private SharedPreferences mPrefs;
AsyncFacebookRunner mAsyncRunner;
Facebook facebook = new Facebook(id);
String access_token = "";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
login();
}
public void login(){
/*
* Get existing access_token if any
*/
mPrefs = PreferenceManager.getDefaultSharedPreferences(this);
access_token = mPrefs.getString("access_token", "x");
long expires = mPrefs.getLong("access_expires", -1);
if(access_token != null) {
facebook.setAccessToken(access_token);
}
if(expires != 0) {
facebook.setAccessExpires(expires);
}
/*
* Only call authorize if the access_token has expired.
*/
if(facebook.isSessionValid() == false) {
facebook.authorize(this, permissoes, -1, new DialogListener() {
@Override
public void onComplete(Bundle values) {
SharedPreferences.Editor editor = mPrefs.edit();
editor.putString("access_token", facebook.getAccessToken());
editor.putLong("access_expires", facebook.getAccessExpires());
editor.commit();
}
@Override
public void onFacebookError(FacebookError error) {}
@Override
public void onError(DialogError e) {}
@Override
public void onCancel() {}
});
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
facebook.authorizeCallback(requestCode, resultCode, data);
}
@Override
public void onResume() {
super.onResume();
facebook.extendAccessTokenIfNeeded(this, null);
}
public void logout(){
mAsyncRunner.logout(getBaseContext(), new RequestListener() {
@Override
public void onComplete(String response, Object state) {}
@Override
public void onIOException(IOException e, Object state) {}
@Override
public void onFileNotFoundException(FileNotFoundException e,
Object state) {}
@Override
public void onMalformedURLException(MalformedURLException e,
Object state) {}
@Override
public void onFacebookError(FacebookError e, Object state) {}
});
}
public void postar(View v){
//if(facebook.isSessionValid()){
EditText et = (EditText) findViewById(R.id.et);
Bundle parameters = new Bundle();
String msg = et.getText().toString();
String r = "";
parameters.putString(this.access_token, msg);
try {
r = facebook.request("me/feed", parameters, "POST");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Toast.makeText(this, r, Toast.LENGTH_LONG);
//}else{login();}
}
}
現在我正在使用正確的參數(「消息」),但在設備中仍然無法使此方法正常工作。 thx – Jas
現在出現的錯誤如下: {「error」:{「message」:「必須使用活動訪問令牌來查詢有關當前用戶的信息。」,「type」:「OAuthException」, 「code」:2500}} – Jas
聽起來像你有認證問題。如果用戶通過身份驗證,則不應出現該消息。 –