1. Hast Du Lust, bei uns mitzuarbeiten und das AH-Team zu verstärken? Alle Details zu dieser aktuellen Herausforderung findest Du hier.
  1. sem_thesis, 09.05.2011 #1
    sem_thesis

    sem_thesis Threadstarter Android-Hilfe.de Mitglied

    Hallo!


    Ich habe Facebook SDK auf Android installiert und auch schon ein paar Userdaten vom Graph API gesammelt.

    Nun möchte ich die Methode friends.getMutualFriends des Legacy API's (Link) verwenden, um die gemeinsamen Freunde zweier FB-User zu bestimmen.

    Dazu habe ich mir das Android-Tutorial auf FB Docs (Link) angeschaut.

    Dort steht Folgendes:
    Das Graph API konnte ich wie erwähnt erfolgreich aufrufen.
    Code:
    public static final APP_ID = "asdfasdf";
    mFacebook = new Facebook(APP_ID);
    mAsyncRunner = new AsyncFacebookRunner(mFacebook);
    mAsyncRunner.request("me", new IDRequestListener());
    
    Bei dem Aufruf Legacy-API scheitert das Ganze:
    Code:
    //call the Legacy REST API method friends.getMutualFriends
    Bundle parameters = new Bundle();
    parameters.putString("friends.getMutualFriends", "auth.expireSession");
    String response = request(parameters); 
    
    Eclipse gibt die Fehlermeldung:

    Ich verstehe nicht, was hier falsch läuft??

    Ausserdem: Wie kann ich für die friends.getMutualFriends-Methode Parameter wie targetid und sourceid angeben?
     
  2. Kranki, 10.05.2011 #2
    Kranki

    Kranki Ehrenmitglied

  3. sem_thesis, 10.05.2011 #3
    sem_thesis

    sem_thesis Threadstarter Android-Hilfe.de Mitglied

    Du meinst diesen hier?
    Der Graph API unterstützt die friends.getMutualFriends-Funktion noch nicht :-(
    Jah - vielleicht ist's nicht so sinnvoll, aber meine App wird später (von einer anderen Person) auch updated. Sie soll aber mit den jetzt vorhandenen Mitteln (Legacy API) funktionieren können.
     
  4. Kranki, 10.05.2011 #4
    Kranki

    Kranki Ehrenmitglied

    Nein, den darunter. (OK, dann ist das halt der zweite Absatz.)
     
  5. sem_thesis, 10.05.2011 #5
    sem_thesis

    sem_thesis Threadstarter Android-Hilfe.de Mitglied

    Ok, das habe ich vorhin gelesen.
    Aber ich habe keine Ahnung wie das in Android realisierbar ist.

    HTTP requests?
    Wie baue ich mein access_token im HTTP Request hinein??
     
  6. Kranki, 10.05.2011 #6
    Kranki

    Kranki Ehrenmitglied

  7. sem_thesis, 14.05.2011 #7
    sem_thesis

    sem_thesis Threadstarter Android-Hilfe.de Mitglied


    Danke!
    Jetzt habe ich mal deinen Tutorial befolgt.
    Damit will ich nun (für den Moment) das Resultat der GET-Abfrage anzeigen lassen.
    Der Code für die Webservice-Bearbeitung sieht nun folgendermassen aus:


    Code:
    public class WebService    {  
          
        //Bezeichnung der Klasse   
        private final String TAG = "WebService";  
        
        // globale Variable
        HttpClient httpClient;
          
        
        public void getJSONObject(String url)    {  
          
            httpClient = new DefaultHttpClient();  
            HttpGet httpGet = new HttpGet(url);  
            HttpResponse response;  
          
            try {  
                response = httpClient.execute(httpGet);  
          
                // TODO: HTTP-Status (z.B. 404) in eigener Anwendung verarbeiten.  
          
                Log.i(TAG,response.getStatusLine().toString());  
          
                HttpEntity entity = response.getEntity();  
          
                
                if (entity != null) {  
          
                    InputStream instream = entity.getContent();  
                    BufferedReader reader = new BufferedReader(new InputStreamReader(instream));  
                    StringBuilder sb = new StringBuilder();  
          
                    String line = null;  
                    while ((line = reader.readLine()) != null)    {
                        sb.append(line + "n"); 
                    }
                              
                    String result=sb.toString(); 
                    Log.i(TAG,result);
                    
                }
                
                
            }    catch (ClientProtocolException e) {  
                    e.printStackTrace();  
            }    catch (IOException e) {  
                    e.printStackTrace();  
               }    catch (Exception e){  
                    e.printStackTrace();  
               }    finally    {  
                    httpGet.abort();  
               }  
               
        }
        
        
        
        public void postJSONObject(String url, JSONObject data, String objectName)    {  
    
            HttpPost postMethod = new HttpPost(url);  
          
            try    {  
                HttpParams params = new BasicHttpParams();  
                params.setParameter(objectName, data.toString());  
          
                postMethod.setParams(params);  
                httpClient.execute(postMethod);  
                Log.i(TAG, "Post request, data: " + params.toString());  
          
            }    catch (ClientProtocolException e)    {  
                e.printStackTrace();  
            }    catch (IOException e)    {  
                e.printStackTrace();  
            }    catch (Exception e)    {  
                e.printStackTrace();        
            }    finally    {  
                postMethod.abort();  
            }
            
        }
        
            
    }
    
    Soweit, so gut.

    Jetzt kommt der Aufruf in der Hauptklasse:

    Code:
    WebService s = new WebService();
    s.getJSONObject("https://api.facebook.com/method/friends.getMutualFriends?target_uid=504184526&access_token=oauth_access_token");
    
    Die URL habe ich von der folgenden Seite erstellt.
    Ich habe eine beliebige ID aus meiner Freundesliste genommen mit dem ich 2 gemeinsame Freunde habe.

    Nun wird, wie gewollt, die result variable geloggt.
    Sie hat folgenden Output:

    Ich verstehe nicht wieso der access_token nicht akzeptiert wird.
    Ist mein Funktionsaufruf falsch geraten???
     
  8. sem_thesis, 14.05.2011 #8
    sem_thesis

    sem_thesis Threadstarter Android-Hilfe.de Mitglied

    Ich habe mir gerade das Facebook Framework für das Graph API angeschaut. Das Framework macht schon alles (token-bearbeitung, request, etc.). Man muss nur die AsyncFacebookRunner-Klasse aufrufen und ein request("url") mit der richtigen URL schicken.

    Kann ich dieses Framework nicht direkt auch für das Legacy API nutzen?
     

    Anhänge:

  9. sem_thesis, 18.05.2011 #9
    sem_thesis

    sem_thesis Threadstarter Android-Hilfe.de Mitglied

    Es kann ja wohl nicht so schwer sein die alte Facebook API zu benutzen.

    Das Framework com_facebook_android macht das ja schon für die neue Graph API.


    Muss ich nun also
    a) ein neues HTTP-Request + HTTP-Get + Tokenverarbeitung Framework erstellen
    oder
    b) kann ich einfach meine HTTP-Requests insr alte Framework einbauen
    oder
    c) brauche ich gar kein Framework und kann einfach 2-3 Zeilen HTTP-Request-Code einbauen?



    Ich steh' da echt auf dem Schlauch.
    Was soll das ganze Facebook-Zeug? Es isch so schlecht dokumentiert...
     
Die Seite wird geladen...
Ähnliche Themen Forum Datum
[ERLEDIGT] Android-App / Bluetoothgerät simulieren Android App Entwicklung Gestern um 22:35 Uhr
[OFFEN] Android Studio 4 Knöpfe nebeneinander Android App Entwicklung Dienstag um 16:30 Uhr
[OFFEN] Android app selber entwickeln mit Bluetooth Android App Entwicklung 13.10.2017
[OFFEN] RadioButtons mit Button Tinting sehen auf Geräten unterschiedlich aus (API > 21) Android App Entwicklung 09.09.2017
[Offen] Android Layout funktioniert nicht Android App Entwicklung 08.09.2017
[ERLEDIGT] LL zur Laufzeit erstellen, Abstand zwischen LL und LL möglich ? Android App Entwicklung 06.09.2017
[OFFEN] App schließt nach Öffnen sofort Android App Entwicklung 04.09.2017
[ERLEDIGT] Um einen Zusatz in einem Programm unter Android zu machen Android App Entwicklung 22.08.2017
[GESCHLOSSEN] Random ListItem ausgeben funktioniert nicht mehr Android App Entwicklung 13.08.2017
[OFFEN] Bild per Intent an ListView übergeben und anzeigen Android App Entwicklung 13.08.2017
Du betrachtest das Thema "Wie rufe ich Facebook Legacy API von Android" im Forum "Android App Entwicklung",