Ich bin neu in Android. Ich bin auf der Suche nach laden Foto nach Facebook durch Autorisierung, erhalten access_token. Wie macht man das? Bitte geben Sie mir einen Beispielcode in Java.Foto auf Facebook mit Facebook Android SDK in Android hochladen
Antwort
Der einfachste Weg für Sie ist es, die bestehenden SDK zu verwenden, so etwas wie das:
http://github.com/facebook/facebook-android-sdk/
http://code.google.com/p/fbconnect-android/
http://wiki.developers.facebook.com/index.php/User:Android
Je flexibler Weise ist die API selbst, hier zu implementieren sind die docs das wird nützlich sein:
http://developers.facebook.com/docs/
Wenn ich auf die FB api schaue, sehe ich keine Möglichkeit ein Bild hochzuladen. Ich sehe nur, dass Sie eine Bild-URL als Parameter übergeben können, aber nicht die Bilddaten selbst. Oder habe ich irgendetwas übersehen? –
wie Sie mehr als ein Bild zu fb teilen ... bitte Hilfe – jyomin
gerade gebucht hier die einfache Art und Weise ein Bild hochladen:
android facebook publish photo
Code:
byte[] data = null;
Bitmap bi = BitmapFactory.decodeFile(photoToPost);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bi.compress(Bitmap.CompressFormat.JPEG, 100, baos);
data = baos.toByteArray();
Bundle params = new Bundle();
params.putString("method", "photos.upload");
params.putByteArray("picture", data);
AsyncFacebookRunner mAsyncRunner = new AsyncFacebookRunner(facebook);
mAsyncRunner.request(null, params, "POST", new SampleUploadListener(), null);
Wie kann ich dem hochgeladenen Foto eine Beschreibung hinzufügen? – Maxim
Havent versucht, aber ich bin sicher, wenn Sie auf die Facebook-Entwickler schauen, wird es etwas geben, das Sie den Params hinzufügen können. – trgraglia
Haben Sie das herausgefunden? Der Teil über die Beschreibung? – ekawas
facebook.authorize(FbdemoActivity.this, new String[]{ "user_photos,publish_checkins,publish_actions,publish_stream"},new DialogListener() {
@Override
public void onComplete(Bundle values) {
}
@Override
public void onFacebookError(FacebookError error) {
}
@Override
public void onError(DialogError e) {
}
@Override
public void onCancel() {
}
});
public void postImageonWall() {
byte[] data = null;
Bitmap bi = BitmapFactory.decodeFile("/sdcard/viewitems.png");
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bi.compress(Bitmap.CompressFormat.JPEG, 100, baos);
data = baos.toByteArray();
Bundle params = new Bundle();
params.putString(Facebook.TOKEN, facebook.getAccessToken());
params.putString("method", "photos.upload");
params.putByteArray("picture", data);
AsyncFacebookRunner mAsyncRunner = new AsyncFacebookRunner(facebook);
mAsyncRunner.request(null, params, "POST", new SampleUploadListener(), null);
}
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) {
// TODO Auto-generated method stub
}
}
hier wird der gesamte Code versuchen, es wird auf jeden Fall für Sie arbeiten, und es ist Arbeit für mich auch
Was ist BaseRequestListener? –
Ihr Beispiel funktioniert für mich. Aber in extra möchte ich die einfache Nachricht mit diesem Fotopost posten. Also wie ist es möglich? Irgendeine Idee ? Gib Antwort: http://stackoverflow.com/questions/8585043/android-how-to-post-the-message-with-the-image-post-on-facebook –
photos.upload ist kein veraltetes Vermächtnis Rest Api Methode? –
Erfolgreich habe ich hochgeladen Fotos auf Facebook Wand Ich habe den folgenden Code verwendet.
In Ihrer Haupttätigkeit machen Sie folgendes;
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
authenticatedFacebook.authorize(Facebooktest2Activity.this, new String[]{ "user_photos,publish_checkins,publish_actions,publish_stream"},new DialogListener() {
@Override
public void onComplete(Bundle values) {
postImage();
Toast.makeText(getApplicationContext(), "Image Posted on Facebook.", Toast.LENGTH_SHORT).show();
}
@Override
public void onFacebookError(FacebookError error) {
}
@Override
public void onError(DialogError e) {
}
@Override
public void onCancel() {
}
});
}
});
}
public void postImage(){
byte[] data = null;
Bitmap bi = BitmapFactory.decodeFile("/sdcard/img.jpg");
//Bitmap bi = BitmapFactory.decodeResource(getResources(), R.drawable.icon);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bi.compress(Bitmap.CompressFormat.JPEG, 100, baos);
data = baos.toByteArray();
Bundle params = new Bundle();
params.putString(Facebook.TOKEN, authenticatedFacebook.getAccessToken());
params.putString("method", "photos.upload");
params.putByteArray("picture", data);
AsyncFacebookRunner mAsyncRunner = new AsyncFacebookRunner(authenticatedFacebook);
mAsyncRunner.request(null, params, "POST", new SampleUploadListener(), null);
}
public class SampleUploadListener extends BaseKeyListener implements RequestListener {
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());
}
}
public void onFacebookError(FacebookError e, Object state) {
// TODO Auto-generated method stub
}
public Bitmap getInputType(Bitmap img) {
// TODO Auto-generated method stub
return img;
}
@Override
public int getInputType() {
// TODO Auto-generated method stub
return 0;
}
@Override
public void onIOException(IOException e, Object state) {
// TODO Auto-generated method stub
}
@Override
public void onFileNotFoundException(FileNotFoundException e,
Object state) {
// TODO Auto-generated method stub
}
@Override
public void onMalformedURLException(MalformedURLException e,
Object state) {
// TODO Auto-generated method stub
}
}
Sicher Dieser Code wird Ihnen helfen.
ich diesen Code verwendet 'BaseRequestListener' lösen, und bekam Ausnahme als java.lang.OutOfMemoryError \t bei java.io.ByteArrayOutputStream.expand (ByteArrayOutputStream.java:103) \t bei java.io.ByteArrayOutputStream.write (ByteArrayOutputStream .java: 234) \t bei android.graphics.Bitmap.nativeCompress (Native Methode) in dieser Zeile bi.compress (Bitmap.CompressFormat.JPEG, 100, baos); – Manikandan
authenticatedFacebook is what..it gibt mir einen Fehler ... bitte Hilfe – jyomin
Man hat mir wirklich geholfen. Danke vielmals. – Mayur
Wenn Sie ein Foto mit einer Beschreibung veröffentlichen möchten Sie dies tun können:
public void publishPhoto(byte[] imgData, string message) {
AsyncFacebookRunner mAsyncRunner = new AsyncFacebookRunner (facebook);
Bundle parameters = new Bundle();
parameters.putString (Facebook.TOKEN, facebook.getAccessToken());
parameters.putString ("message", message);
parameters.putByteArray ("source", imgData);
mAsyncRunner.Request ("me/photos", parameters, "POST", new RequestListener(), null);
}
+1 Das ist es! Vielen Dank. Nachdem ich so viele Leute mit der Legacy-API gesichtet habe, zeigt diese nun die Graph-API-Lösung. –
Sanjana, sollten Sie eine Antwort akzeptieren. Es hilft dir und anderen, die auf Stack Overflow helfen. Vielen Dank. – trgraglia