Jetzt kostenlos registrieren. Mitglieder surfen ohne Werbung auf Android-Hilfe.de!
Zurück   Android-Hilfe.de > Android Developer > Android App Entwicklung

Wie rufe ich Facebook Legacy API von Android

Das Thema "Wie rufe ich Facebook Legacy API von Android" befindet sich unter Android App Entwicklung auf Android-Hilfe.de.


Antwort

 

Themen-Optionen Ansicht
Alt 09.05.2011, 22:03   #1 (permalink)
Android-Hilfe.de Mitglied

Modell: Nexus One

Registriert seit: 06.03.2011
Beiträge: 111
Abgegebene Danke: 14
Erhielt 0 Danke für 0 Beiträge
Standard Wie rufe ich Facebook Legacy API von Android

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:
Zitat:
// get information about the currently logged in user
facebook.request("me");
//get the logged-in user's friends
facebook.request("me/friends");

//call a Legacy REST API method
Bundle parameters = new Bundle();
parameters.putString("method", "auth.expireSession");
String response = request(parameters);
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:

Zitat:
The method request(Bundle) is undefined for the type FBDataViewer (die Klasse wo der ganze Code steht)
Ich verstehe nicht, was hier falsch läuft??

Ausserdem: Wie kann ich für die friends.getMutualFriends-Methode Parameter wie targetid und sourceid angeben?
sem_thesis ist offline   Mit Zitat antworten
Alt 10.05.2011, 16:34   #2 (permalink)
Ehren-Mitglied
 
Benutzerbild von Kranki

Modell: Nexus One

Registriert seit: 19.07.2009
Beiträge: 4.329
Abgegebene Danke: 127
Erhielt 1.372 Danke für 871 Beiträge
Kranki eine Nachricht über ICQ schicken
Standard AW: Wie rufe ich Facebook Legacy API von Android

https://developers.facebook.com/docs/reference/rest/
Lies dir mal ganz oben den ersten Absatz durch.
__________________
CyanogenMod 7 Nightly - AmonRa Recovery 2.0 - Nexus One
Kein Support via PN und E-Mail. Bitte das Forum nutzen.
"Es ist Mode geworden, die Freiheitsrechte des Bürgers in den Mittelpunkt zu stellen." - Siegfried Kauder
Kranki ist gerade online   Mit Zitat antworten
Alt 10.05.2011, 17:46   #3 (permalink)
Android-Hilfe.de Mitglied

Modell: Nexus One

Registriert seit: 06.03.2011
Beiträge: 111
Abgegebene Danke: 14
Erhielt 0 Danke für 0 Beiträge
Standard AW: Wie rufe ich Facebook Legacy API von Android

Zitat:
Zitat von Kranki Beitrag anzeigen
https://developers.facebook.com/docs/reference/rest/
Lies dir mal ganz oben den ersten Absatz durch.
Du meinst diesen hier?
Zitat:
We are in the process of deprecating the REST API. If you are building a new Facebook application, please use the Graph API. While there is still functionality that we have not ported over yet, the Graph API is the center of Facebook Platform moving forward and where all new features will be found.
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.
sem_thesis ist offline   Mit Zitat antworten
Alt 10.05.2011, 17:59   #4 (permalink)
Ehren-Mitglied
 
Benutzerbild von Kranki

Modell: Nexus One

Registriert seit: 19.07.2009
Beiträge: 4.329
Abgegebene Danke: 127
Erhielt 1.372 Danke für 871 Beiträge
Kranki eine Nachricht über ICQ schicken
Standard AW: Wie rufe ich Facebook Legacy API von Android

Nein, den darunter. (OK, dann ist das halt der zweite Absatz.)
Zitat:
The REST API enables you to interact with Facebook web site programmatically via HTTP requests.
The REST API supports both OAuth 2.0 as well as an older, custom authorization signature scheme. See the authentication upgrade guide for information about how to upgrade your existing sessions to OAuth 2.0.
To make requests to the REST API with OAuth, you requests URLs in the following format:
https://api.facebook.com/method/method_name? access_token=oauth_access_token& arg0=value0& arg1=value1 For example, you can fetch Zuck's profile with:
https://api.facebook.com/method/users.getInfo?uids=4&fields=name&access_token=...
__________________
CyanogenMod 7 Nightly - AmonRa Recovery 2.0 - Nexus One
Kein Support via PN und E-Mail. Bitte das Forum nutzen.
"Es ist Mode geworden, die Freiheitsrechte des Bürgers in den Mittelpunkt zu stellen." - Siegfried Kauder
Kranki ist gerade online   Mit Zitat antworten
Alt 10.05.2011, 19:02   #5 (permalink)
Android-Hilfe.de Mitglied

Modell: Nexus One

Registriert seit: 06.03.2011
Beiträge: 111
Abgegebene Danke: 14
Erhielt 0 Danke für 0 Beiträge
Standard AW: Wie rufe ich Facebook Legacy API von Android

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??
sem_thesis ist offline   Mit Zitat antworten
Alt 10.05.2011, 22:40   #6 (permalink)
Ehren-Mitglied
 
Benutzerbild von Kranki

Modell: Nexus One

Registriert seit: 19.07.2009
Beiträge: 4.329
Abgegebene Danke: 127
Erhielt 1.372 Danke für 871 Beiträge
Kranki eine Nachricht über ICQ schicken
Standard AW: Wie rufe ich Facebook Legacy API von Android

How to: Serverkommunikation in Android (REST + JSON) | andforge.net
__________________
CyanogenMod 7 Nightly - AmonRa Recovery 2.0 - Nexus One
Kein Support via PN und E-Mail. Bitte das Forum nutzen.
"Es ist Mode geworden, die Freiheitsrechte des Bürgers in den Mittelpunkt zu stellen." - Siegfried Kauder
Kranki ist gerade online   Mit Zitat antworten
Folgender Benutzer bedankt sich bei Kranki für diesen Beitrag:
sem_thesis (14.05.2011)
Alt 14.05.2011, 09:54   #7 (permalink)
Android-Hilfe.de Mitglied

Modell: Nexus One

Registriert seit: 06.03.2011
Beiträge: 111
Abgegebene Danke: 14
Erhielt 0 Danke für 0 Beiträge
Standard AW: Wie rufe ich Facebook Legacy API von Android


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:

Zitat:
<?xml version="1.0" encoding="UTF-8"?>

<error_response xmlns="http://api.facebook.com/1.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://api.facebook.com/1.0/ http://api.facebook.com/1.0/facebook.xsd">
<error_code>190</error_code>
<error_msg>Invalid OAuth access token.</error_msg>
<request_args list="true">
<arg>
<key>method</key>
<value>friends.getMutualFriends</value>
</arg>
<arg>
<key>target_uid</key>
<value>504184526</value>
</arg>
<arg>
<key>access_token</key>
<value>oauth_access_token</value>
</arg>
</request_args>
</error_response>
Ich verstehe nicht wieso der access_token nicht akzeptiert wird.
Ist mein Funktionsaufruf falsch geraten???
sem_thesis ist offline   Mit Zitat antworten
Alt 14.05.2011, 10:08   #8 (permalink)
Android-Hilfe.de Mitglied

Modell: Nexus One

Registriert seit: 06.03.2011
Beiträge: 111
Abgegebene Danke: 14
Erhielt 0 Danke für 0 Beiträge
Standard AW: Wie rufe ich Facebook Legacy API von Android

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?
Angehängte Dateien
Dateityp: zip facebook.zip (74,4 KB, 0x aufgerufen)
sem_thesis ist offline   Mit Zitat antworten
Alt 18.05.2011, 14:20   #9 (permalink)
Android-Hilfe.de Mitglied

Modell: Nexus One

Registriert seit: 06.03.2011
Beiträge: 111
Abgegebene Danke: 14
Erhielt 0 Danke für 0 Beiträge
Standard AW: Wie rufe ich Facebook Legacy API von Android

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...
sem_thesis ist offline   Mit Zitat antworten
Antwort

Stichworte
-

Themen-Optionen
Ansicht


Ähnliche Themen

Thema Autor Forum Antworten Letzter Beitrag
Wie kann ich mich bei Facebook ausloggen? HelloKitty85 Kommunikation 8 24.06.2011 08:21
[APP] Wie benutze ich die Standard Galerie und Musik App von Android?? marcel-usedom Root / Hacking / Modding für Sony Ericsson Xperia X10 31 22.01.2011 23:41
Wie nutze ich das TTS Feature von Android? PazzeRo HTC Wildfire Forum 4 23.11.2010 09:45
Wie update ich die vorinstallierte Facebook App? mattes_01 Motorola Milestone Forum 2 29.08.2010 14:04
Project Build Target = API 8 | Auch für API <8 User nutzbar? koelly Android App Entwicklung 2 27.05.2010 19:36




Du liest gerade: "Wie rufe ich Facebook Legacy API von Android" unter "Android App Entwicklung" auf Android-Hilfe.de.


Powered by vBulletin®
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Search Engine Friendly URLs by vBSEO
© Android-Hilfe.de 2012 - All rights reserved.