Android 使用graph API在Facebook墙上发布不起作用
我试图用GraphAPI将一些东西发布到Facebook墙上,但它对我来说不管用。 它没有错误,但也没有在我的墙上张贴任何东西 代码如下:Android 使用graph API在Facebook墙上发布不起作用,android,facebook,facebook-graph-api,Android,Facebook,Facebook Graph Api,我试图用GraphAPI将一些东西发布到Facebook墙上,但它对我来说不管用。 它没有错误,但也没有在我的墙上张贴任何东西 代码如下: public class ActivityName extends Activity{ Dialog dialog; Facebook fb; SharedPreferences sp; String access_token, name, email; @Override protected void
public class ActivityName extends Activity{
Dialog dialog;
Facebook fb;
SharedPreferences sp;
String access_token, name, email;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.success);
String APP_ID = "MY_ID";
fb = new Facebook(APP_ID);
sp = getPreferences(MODE_PRIVATE);
access_token = sp.getString("access_token", null);
long expires = sp.getLong("access_expires", 0);
if(access_token!= null){
fb.setAccessToken(access_token);
}
if(expires != 0){
fb.setAccessExpires(expires);
}
((Button) findViewById(R.id.btn_home)).setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
openContextMenu(v);
}
});
((Button) findViewById(R.id.btn_home)).setOnCreateContextMenuListener(new View.OnCreateContextMenuListener() {
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
// TODO Auto-generated method stub
menu.setHeaderTitle("Tell the world!");
menu.add(0, 0, 0, "Facebook");
menu.add(0, 1, 0, "Twitter");
menu.add(0, 2, 0, "Skip");
}
});
}
public boolean onContextItemSelected(MenuItem item) {
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item
.getMenuInfo();
switch (item.getItemId()) {
case 1:
break;
case 0:
fb.authorize(SuccessActivity.this, new String[]{ "photo_upload,user_photos,publish_checkins,publish_actions,publish_stream"},new DialogListener() {
public void onComplete(Bundle values) {
postToWall();
}
public void onFacebookError(FacebookError error) {
}
public void onError(DialogError e) {
}
public void onCancel() {
}
});
break;
case 2:
Intent i = new Intent(getApplicationContext(),MainActivity.class);
startActivity(i);
overridePendingTransition(android.R.anim.slide_in_left, android.R.anim.slide_out_right);
break;
}
return true;
}
public void onBackPressed() {
}
@SuppressLint("SdCardPath")
public void postToWall() {
// post on user's wall.
try {
if (fb.isSessionValid()) {
byte[] data = null;
Bitmap bi = BitmapFactory.decodeFile("/sdcard/Asa.jpg");
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bi.compress(Bitmap.CompressFormat.JPEG, 100, baos);
data = baos.toByteArray();
Bundle params = new Bundle();
params.putString(Facebook.TOKEN, fb.getAccessToken());
params.putString("message", "Test from Android AVD");
params.putByteArray("picture", data);
AsyncFacebookRunner mAsyncRunner = new AsyncFacebookRunner(fb);
mAsyncRunner.request("/me/feed", params,"POST", new SampleUploadListener(),null);
}
}catch(Exception e){
e.printStackTrace();
}
}
public class SampleUploadListener extends BaseRequestListener {
public void onComplete(final String response, final Object state) {
try {
// process the response here: (executed in background thread)
Log.d("Facebook-Example", "Response: " + response.toString());
JSONObject json = Util.parseJson(response);
final String src = json.getString("src");
// then post the processed result back to the UI thread
// if we do not do this, an runtime exception will be generated
// e.g. "CalledFromWrongThreadException: Only the original
// thread that created a view hierarchy can touch its views."
} catch (JSONException e) {
Log.w("Facebook-Example", "JSON Error in response");
} catch (FacebookError e) {
Log.w("Facebook-Example", "Facebook Error: " + e.getMessage());
}
}
@Override
public void onFacebookError(FacebookError e, Object state) {
}
}
}
有人能猜出这个代码有什么遗漏或错误吗?
如果您有任何想法,我们将不胜感激。这里是我不久前用来做类似事情的一些代码:
function publishPost(session) {
var $title = $('#title').val(),
$story = $('#story').val(),
publish = {
method: 'stream.publish',
message: 'I just entered the Your Perfect Kent Day Competition.',
picture : 'http://apps.facebook.com/perfect-kent-day/',
link : 'http://apps.facebook.com/perfect-kent-day/',
name: 'Enter to win or vote for your faourite story here!',
caption: $title,
description: $story,
actions : { name : 'Apply for Kent Teach Jobs...', link : 'http://www.kent- teach.com/'}
};
FB.api('/me/feed', 'POST', publish, function(response) {
//alert('A post had just been published into the stream on your wall.');
$('#before-submit').hide();
$('#after-submit').show();
$('#loading').fadeOut();
});
};
当页面上的表单使用AJAX提交后,我调用了publishPost()函数。希望这有帮助 在Facebook Developer中注册应用程序时,你是否将“我的ID”替换为你的实际ID?检查你的互联网连接如果我错了,请更正我,但这是Javascript,而问题是关于Android的。