Jestem nowy na Androida. Poszukuję opcji załaduj zdjęcie do facebooka przez autoryzację, uzyskując access_token. Jak to zrobić? Proszę podać przykładowy kod w Javie.Prześlij zdjęcie na Facebooka za pomocą zestawu Android Android SDK w Androidzie
Odpowiedz
Najprostszym sposobem dla ciebie jest, aby wykorzystać istniejącą SDK, coś takiego:
http://github.com/facebook/facebook-android-sdk/
http://code.google.com/p/fbconnect-android/
http://wiki.developers.facebook.com/index.php/User:Android
Im bardziej elastycznym sposobem jest wdrożenie API samemu, tutaj są docs że będzie być przydatne:
http://developers.facebook.com/docs/
Patrząc na interfejs API FB, nie widzę sposobu na przesłanie obrazu. Widzę tylko, że możesz podać URL obrazu jako parametr, ale nie same dane obrazu. Czy też przeoczyłem coś? –
jak udostępnić więcej niż jedno zdjęcie do fb ... proszę pomóc – jyomin
tylko wysłana tutaj prosty sposób załadować zdjęcie:
android facebook publish photo
Kod:
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);
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
}
}
Oto cały kod spróbować to na pewno działa dla Ciebie i to jest praca dla mnie również
Co to jest BaseRequestListener? –
Twój przykład działa dla mnie. Ale dodatkowo chcę opublikować prostą wiadomość z tym postem. Jak to możliwe? Dowolny pomysł ? daj odpowiedź tutaj: http://stackoverflow.com/questions/8585043/android-how-to-post-the-message-with-the-image-post-on-facebook –
photos.upload nie jest przestarzałą wersją Metoda odpoczynku Api? –
Pomyślnie Przesłałem zdjęcia na facebooku na ścianie Użyłem następującego kodu.
W głównej aktywności wykonaj następujące czynności;
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
}
}
Z pewnością ten kod pomoże.
Użyłem tego kodu, i dostał wyjątek jako java.lang.OutOfMemoryError \t w java.io.ByteArrayOutputStream.expand (ByteArrayOutputStream.java:103) \t na java.io.ByteArrayOutputStream.write (ByteArrayOutputStream .java: 234) \t na android.graphics.Bitmap.nativeCompress (metoda macierzysta) w tym wierszu bi.compress (Bitmap.CompressFormat.JPEG, 100, baos); – Manikandan
authenticatedFacebook jest tym, co daje mi błąd. Pomóżcie – jyomin
Człowiekowi to bardzo mi pomogło. Wielkie dzięki. – Mayur
Jeśli chcesz opublikować zdjęcie z opisem można to zrobić:
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 To wszystko! Dziękuję Ci. Po przeskanowaniu tak wielu osób korzystających ze starszego interfejsu API, ten w końcu pokazuje rozwiązanie Graph api. –
- 1. Uzyskaj zdjęcie profilowe z Facebooka za pomocą 3.0 SDK
- 2. Jak uzyskać zdjęcie profilowe w Androidzie za pomocą zestawu Twitter,
- 3. Błąd otrzymany podczas aktualizowania zestawu SDK za pomocą Menedżera SDK
- 4. Błąd zestawu SDK systemu Android podczas ładowania zestawu SDK:
- 5. Uwierzytelnianie za pomocą Facebooka C# SDK
- 6. Android - Zdjęcie przechwycone
- 7. Prześlij zdjęcie na dysk bez kompresji
- 8. Konflikt konfiguracji zestawu SDK Android Dropbox
- 9. Udostępnij Android - Facebook SDK - ShareActionProvider
- 10. Android: Prześlij zdjęcia
- 11. Uzyskaj zawartość reklamy na Facebooku za pomocą Facebooka PHP SDK
- 12. Android, wybieranie zestawu szyfrów
- 13. Udostępnianie za pomocą Facebooka, Twittera na iOS
- 14. html5 Prześlij zdjęcie
- 15. Prześlij zdjęcie do albumu za pomocą interfejsu API Graph na Facebooku
- 16. zewnętrzne (np. Facebook) zdjęcie kontaktu na Androidzie
- 17. Jak otrzymać plik za pomocą NFC (Android Beam) w Androidzie
- 18. Prośba o uprawnienia do kamery za pomocą zestawu Android SDK 23
- 19. Android: Flip Animacja za pomocą XML dla animacji w Androidzie
- 20. Rozszerzona rzeczywistość bazująca na położeniu Android SDK
- 21. Android: jak dodać kontakt do karty SIM za pomocą SDK?
- 22. Android Picasso auto obraca zdjęcie
- 23. Pokaż liczbę retweetów za pomocą Twitter Fabric Android Sdk TweetViewAdpater
- 24. Android Obróć zdjęcie przed zapisaniem
- 25. Szukasz android Facebooku przykładów SDK
- 26. Jak zdobyć listę znajomych z Facebooka za pomocą Androida sdk?
- 27. Android SDK: Odtwarzanie wideo za pomocą protokołu MMS
- 28. Jak zamknąć okno dialogowe SDK Facebooka otwarte za pomocą FB.ui()?
- 29. Nie mogę przekonać IntelliJ do rozpoznawania mojego zestawu SDK Android
- 30. Uaktualnianie zestawu SDK systemu Android powoduje awarię java.lang.VerifyError
Sanjana, należy przyjąć odpowiedź. Pomaga Tobie i innym, którzy pomagają w przepełnieniu stosu. Dzięki. – trgraglia