pdir / social-feed-bundle

Social feed extension for Contao CMS
GNU Lesser General Public License v3.0
13 stars 15 forks source link

Facebook verweigert Zugriff auf Instagram Graph API nach Inaktivität #39

Open MrFastcats opened 4 years ago

MrFastcats commented 4 years ago

Bug description

Hi,

Ende August hatten wir das Social Feed nach Vorgaben für Instagram auf unserer Website implementiert. Zum Ende Oktober wurde von Facebook der Zugriff auf die Graph API wegen "Inaktivität" deaktiviert. Seitdem können wir auf unserer Website keine neuen Instagram Posts mehr darstellen obwohl der "Zugriff wiederhergestellt" wurde. Müssen wir das Social Feed neu einrichten? Wie können wir diese Deaktivierung wegen Inaktivität durch Facebook zukünftig umgehen?

Danke für Ihr kurzes Feedback

Bildschirmfoto 2020-11-09 um 22 16 59
S-Snowball commented 3 years ago

Schließe ich mich an.

Habe eine Email erhalten, dass der Zugriff wegen Inaktivität entfernt wurde. Auf der FB developrs seite habe ich den Zugriff wieder hergestellt, aber seid dem wird nichts mehr synchronisiert.

MrFastcats commented 3 years ago

Schließe ich mich an.

Habe eine Email erhalten, dass der Zugriff wegen Inaktivität entfernt wurde. Auf der FB developrs seite habe ich den Zugriff wieder hergestellt, aber seid dem wird nichts mehr synchronisiert.

Einzige Lösung die ich dazu bisher gefunden habe ist, den Account nochmal neu angelegt. Der dadurch zieht sich das Plug-in einen neuen Token. Außerdem hatte ich den Einleseturnus auf "minütlich" geändert. Seitdem gehe ich 1x pro Woche auf die Facebook Developers Seite um der "Inaktivität" vorzubeugen. Bisher funktioniert es aber eine bequeme Lösung ist das leider nicht...

S-Snowball commented 3 years ago

Einzige Lösung die ich dazu bisher gefunden habe ist, das Newsarchiv neu-einzulesen. Seitdem gehe ich 1x pro Woche auf die Facebook Developers Seite um der "Inaktivität" vorzubeugen. Bisher funktioniert es aber eine bequeme Lösung ist das leider nicht...

Wie machst du das? Das hatte ich auch versucht, aber es kommt nichts neues an, obwohl bei Instagram ein paar neue Beiträge stehen.

Ich habe es über Nachrichten - Instagram Feed (so habe ich den Feed benannt) und dann oben auf das + Social Feed. Anschliessend Feed abrufen. Aber da passiert nichts weiteres

MrFastcats commented 3 years ago

Einzige Lösung die ich dazu bisher gefunden habe ist, das Newsarchiv neu-einzulesen. Seitdem gehe ich 1x pro Woche auf die Facebook Developers Seite um der "Inaktivität" vorzubeugen. Bisher funktioniert es aber eine bequeme Lösung ist das leider nicht...

Wie machst du das? Das hatte ich auch versucht, aber es kommt nichts neues an, obwohl bei Instagram ein paar neue Beiträge stehen.

Ich habe es über Nachrichten - Instagram Feed (so habe ich den Feed benannt) und dann oben auf das + Social Feed. Anschliessend Feed abrufen. Aber da passiert nichts weiteres

Ich habe es in meiner Antwort oberhalb nochmal angepasst. Viel Erfolg.

S-Snowball commented 3 years ago

Ganz neu anlegen muss man das nicht.

Du gehst auf developers.facebook.com dort zu Rollen und entfernst den Testuser zu dem Instagram Account. Anschließend neu einladen und im Instagram Account in den Einstellungen unter Tests uns Websites die Testereinladung bestätigen. https://www.instagram.com/accounts/manage_access/

Nun in Contao Backend im Social Feed Accounts den Access Token neu anfordern. Nach Authorisierung wird nun wieder aktualisiert.

Also von nun an wöchentlich bei developers.facebook.com einloggen? Das reicht aus?

Zum Thema Inaktivität steht bei https://developers.facebook.com/docs/apps/#development-mode folgendes:

Inaktive Apps Eine App gilt als inaktiv, wenn SÄMTLICHE der folgenden Bedingungen erfüllt sind:

  • In den vergangenen 90 Tagen hat sich kein Nutzer bei der App angemeldet.
  • Die App hat die Graph bzw. Marketing API innerhalb der letzten 90 Tage nicht aufgerufen.
  • In den vergangenen 90 Tagen hat die App keine Webhook-Benachrichtigungen erhalten.

Sobald eine App als inaktiv gilt, sind alle mit der App verknüpften Zugriffsschlüssel ungültig und die App kann nicht mehr auf die Graph bzw. Marketing API zugreifen. Der Zugriff muss erst wiederhergestellt werden.

Entwickler mit der Rolle „Admin“ in der App, die sich am App-Dashboard anmelden, erhalten die Option, den App-Zugriff auf die Graph bzw. Marketing API wiederherzustellen. Die Wiederherstellung einer App führt zu folgenden Aktionen:

  • Es erfolgt ein automatisches Upgrade auf die aktuelle Version der Graph und Marketing APIs.
  • Webhook-Benachrichtigungen werden wieder aktiviert und auf die neueste Version aktualisiert.

Alte Zugriffsschlüssel bleiben ungültig, d. h., es müssen neue Schlüssel erzeugt werden. Außerdem müssen alle Berechtigungen, die der App aufgrund von Inaktivität entzogen wurden, im App Review-Prozess neu genehmigt werden.

Mit

  • In den vergangenen 90 Tagen hat sich kein Nutzer bei der App angemeldet.
  • Die App hat die Graph bzw. Marketing API innerhalb der letzten 90 Tage nicht aufgerufen.

lässt sich ein Cronjob basteln, der das einloggen übernimmt. Zum testen wäre natürlich ein Logfile oder ähnliches ganz praktisch. Habe auf anhieb bei developers.facebook.com kein logging gefunden. Wenn jemand was hätte, dann gerne mitteilen.

MDevster commented 3 years ago

Wir schauen uns das nächste Woche noch einmal genauer an. Wir prüfen ob wir hier etwas automatisieren können um das Konto "aktiv" zu halten. Aktuell muss erstmal das neue Feature linkedin fertig werden :)

S-Snowball commented 3 years ago

Mein vorrübergehnder Lösungsansatz mit Python, habe das Script im crontab einmal in der Woche. Ob das funktioniert, kann ich erst in ein 90 Tagen sagen, anhand der Facebook Nachricht ob wieder gesperrt wurde.

Aktuell ohne weitere exceptions oder Ausgaben

import requests
from bs4 import BeautifulSoup

#CONSTRAINTS
EMAIL = "deine email"
PASSW = "dein Password"
APP_ID = "deine APP ID" #aus der Browser URL der App
LOGIN_URL = "https://www.facebook.com/login.php?next=https%3A%2F%2Fdevelopers.facebook.com%2Fapps%2F"+APP_ID+"%2F"
FACEBOOK_URL = "https://developers.facebook.com"

#VARS
s = None

class facebook():
    def __init__(self):
        self.s = requests.session()
        self.login()
        self.find_accounts_by_name()

    def login(self):
        r = self.s.get(FACEBOOK_URL, verify=False)
        print(r.text)
        soup = BeautifulSoup(r.text)

        tmp = soup.find(attrs={"name": "lsd"})
        lsd = tmp["value"]
        data={'lsd':lsd}
        data['email'] = EMAIL
        data['pass'] = PASSW
        data['login'] = 'Log In'
        r = self.s.post(LOGIN_URL, data=data, verify=False)
        print(r.text)
samazaphikel commented 3 years ago

Gibt es hier bereits eine funktionierende dauerhafte Lösung?

Total-Reality commented 3 years ago

Mein vorrübergehnder Lösungsansatz mit Python, habe das Script im crontab einmal in der Woche. Ob das funktioniert, kann ich erst in ein 90 Tagen sagen, anhand der Facebook Nachricht ob wieder gesperrt wurde.

Aktuell ohne weitere exceptions oder Ausgaben

import requests
from bs4 import BeautifulSoup

#CONSTRAINTS
EMAIL = "deine email"
PASSW = "dein Password"
APP_ID = "deine APP ID" #aus der Browser URL der App
LOGIN_URL = "https://www.facebook.com/login.php?next=https%3A%2F%2Fdevelopers.facebook.com%2Fapps%2F"+APP_ID+"%2F"
FACEBOOK_URL = "https://developers.facebook.com"

#VARS
s = None

class facebook():
    def __init__(self):
        self.s = requests.session()
        self.login()
        self.find_accounts_by_name()

    def login(self):
        r = self.s.get(FACEBOOK_URL, verify=False)
        print(r.text)
        soup = BeautifulSoup(r.text)

        tmp = soup.find(attrs={"name": "lsd"})
        lsd = tmp["value"]
        data={'lsd':lsd}
        data['email'] = EMAIL
        data['pass'] = PASSW
        data['login'] = 'Log In'
        r = self.s.post(LOGIN_URL, data=data, verify=False)
        print(r.text)

Keine Ahnung wie man das "installiert", aber hat es denn funktioniert oder wieder inaktiv nach 90 Tagen?

MDevster commented 2 years ago

@S-Snowball funktioniert dein Script? Dann würden wir ein php Script bereitstellen und das mit in die Doku aufnehmen.

S-Snowball commented 2 years ago

Ja, es funktionierte.

Habe aktuell keine Installation mit Instagram am laufen.

Kann morgen auf einer Testinstallation nochmal den social-Feed installieren. Und dann schauen, ob es nach wie vor läuft

Am 26.11.2021 um 18:29 schrieb Mathias Arzberger @.***>:

 @S-Snowball funktioniert dein Script? Dann würden wir ein php Script bereitstellen und das mit in die Doku aufnehmen.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or unsubscribe. Triage notifications on the go with GitHub Mobile for iOS or Android.

Total-Reality commented 1 year ago

Ja, es funktionierte. Habe aktuell keine Installation mit Instagram am laufen. Kann morgen auf einer Testinstallation nochmal den social-Feed installieren. Und dann schauen, ob es nach wie vor läuft

Wann genau ist bei dir morgen? :P