Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
MrFastcats opened this issue Nov 9, 2020 · 12 comments
Open
Assignees
Labels

Comments

@MrFastcats
Copy link

MrFastcats commented Nov 9, 2020

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

@MrFastcats MrFastcats added the bug label Nov 9, 2020
@S-Snowball
Copy link

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
Copy link
Author

MrFastcats commented Nov 30, 2020

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
Copy link

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
Copy link
Author

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
Copy link

S-Snowball commented Nov 30, 2020

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
Copy link
Contributor

MDevster commented Dec 9, 2020

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
Copy link

S-Snowball commented Dec 10, 2020

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
Copy link

Gibt es hier bereits eine funktionierende dauerhafte Lösung?

@Total-Reality
Copy link

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
Copy link
Contributor

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

@S-Snowball
Copy link

S-Snowball commented Nov 28, 2021 via email

@Total-Reality
Copy link

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

5 participants