1


Also ich habe mit Facebook Unity SDK für ein paar Tage gearbeitet und es ist ein echter Kampf, um die Dinge damit zu erledigen.Alles veröffentlicht auf Administrator-Konto anstelle des aktuellen Benutzers in Facebook Unity SDK

Also das Problem, mit dem ich gerade konfrontiert bin, ist, dass alles: Shares, Scores-API, Foto-Sharing auf dem Administratorkonto anstelle von dem Konto, das ich gerade verwende, erfolgt.

Beispiel:
I eine Punktzahl von Punkten in meinem Spiel auf Konto B habe (die ein Testbenutzer auf meiner app ist), und dann werde ich versuchen zu laden/attach dieses Ergebnis zu seinem Facebook-Konto.

Stattdessen wird diese Punktzahl hochgeladen/an meine Konto A (das ist Administrator-Konto für diese App).

Das Gleiche gilt folgt für Bilder, Aktien usw.

-Code für das Hochladen/Partitur FB Konto Befestigung:

public void WriteScoreToFBAccount() 
{ 
    Debug.Log("Trying to Upload attach Score to FB account...\n"); 
    lg.WriteToTextUIObject("Trying to Upload attach Score to FB account...\n"); 

    var wwwForm = new WWWForm(); 
    wwwForm.AddField("score", 1999); 
    FB.API("/me/scores", HttpMethod.POST, FacebookProcessCallBack, wwwForm); 
} 

-Code für das Bild teilen

public void TakeAScreenShot() 
{ 
    Debug.Log("Taking a Screenshot and trying to Upload it to FB...\n"); 
    lg.WriteToTextUIObject("Taking a Screenshot and trying to Upload it to FB...\n"); 

    ShareStatusMainWindowBackImage.SetActive(true); 

    var width = Screen.width; 
    var height = Screen.height; 
    var tex = new Texture2D(width, height, TextureFormat.RGB24, false); 

    // Read screen contents into the texture 
    tex.ReadPixels(new Rect(0, 0, width, height), 0, 0); 
    tex.Apply(); 
    byte[] screenshot = tex.EncodeToPNG(); 

    var wwwForm = new WWWForm(); 
    wwwForm.AddBinaryData("image", screenshot, "InteractiveConsole.png"); 
    FB.API("me/photos", HttpMethod.POST, FacebookProcessCallBack, wwwForm); 
} 

Beispiel 2: [AKTUALISIERT]

Debug.Log("Trying to get FB friends Score...\n"); 
lg.WriteToTextUIObject("Trying to get FB friends Score...\n"); 

CurrentFacebookProcess = "GetFBScoreBoard"; 


string url = "https" + "://graph.facebook.com/" + AccessToken.CurrentAccessToken.UserId + "/?fields=scores%7Bapplication%2Cscore%7D&"; 
url += "access_token=" + AccessToken.CurrentAccessToken.TokenString; 
WWWForm wwwForm = new WWWForm(); 
FB.API(url, HttpMethod.GET, FacebookProcessCallBack, wwwForm); 

Wie aus der FB Unity SDK-Dokumentation:

AccessToken A-Klasse im Facebook.Unity Namespace das Zugriffstoken zu Ihrer App gewährt enthält, wenn der Benutzer zuletzt es autorisierte

Sollte nicht ist es das Zugriffs-Token nur für diesen Benutzer, weil er es autorisiert hat? Oder ist es nicht der Fall und der Benutzer autorisierte nur die App?

Beispiel 3: Login-Prozedur [aktualisiert]

public void LogIntoFB_Publish() 
{ 
    Debug.Log("Starting a login proccess with publish permissions...\n"); 
    lg.WriteToTextUIObject("Starting a login proccess with publish permissions...\n"); 
    FB.LogInWithPublishPermissions(new List<string>() { "publish_actions"}, AuthCallback); 
} 
public void LogIntoFB_Read() 
{ 
    Debug.Log("Starting a login proccess with read permissions...\n"); 
    lg.WriteToTextUIObject("Starting a login proccess with read permissions...\n"); 
    FB.LogInWithReadPermissions(new List<string>() { "public_profile", "user_games_activity", "user_friends" }, AuthRead); 
} 

Entwickler Konsole:

enter image description here

ich Book SDK im Allgemeinen bin neu, so werden alle Tipps geschätzt.

BTW, Facebook SDK ist vollständig auf diesem Unity-Projekt durch ihre Anleitung konfiguriert hier: https://developers.facebook.com/docs/unity/gettingstarted

Also meine Frage ist, warum alles, was ich durch den FB-App veröffentlichen, um mein Administrator-Konto statt dem geht Ist das aktuelle Konto in diesem Spiel angemeldet?

Auch ich frage mich, kann es mit der Sache, dass meine App noch nicht genehmigt ist, aber immer noch die Test-Nutzer sollten arbeiten?

+0

Ich freue mich wirklich darauf, dies zu lösen! Alle Tipps oder Vorschläge werden geschätzt !!! – Gintas

+0

Worauf sich '/ me' bezieht, hängt vom verwendeten Zugriffstoken ab. In diesem Fall müssen Sie das Token für Ihr App-Administratorkonto verwenden und nicht das Token des Nutzers, der Ihre App tatsächlich verwendet. Hast du den Token irgendwo hart codiert? – CBroe

+1

Stellen Sie sicher, dass Sie wirklich als das Konto angemeldet sind, von dem Sie glauben, dass Sie es sind. Machen Sie eine Debug-Ausgabe Ihres Zugriffstokens, und debuggen Sie es anschließend, um festzustellen, zu welchem ​​Benutzerkonto es gehört. – CBroe

Antwort

0

habe ich es geschafft, dieses Problem zu beheben, indem Sie diese:

1. einen Login-Flow Implementierung (Vielen Dank an Benutzer @CBroe) durch Abmelden, wenn jemand bereits Angemeldete mit einem einfachen if-Anweisung :

if (FB.IsLoggedIn == true) 
{ 
    Debug.Log("[Facebook SDK]: Already LOGGED In, LOGGIN OUT...\n"); 
    FB.LogOut(); 
} 
else if (FB.IsLoggedIn == false) 
    Debug.Log("[Facebook SDK]: User is NOT LOGGED IN, NOT DOING ANYTHING...\n"); 

Hoffe, dass dies jemand hilft.

Tipps:

  • auch, wie durch @CBroe erwähnt, ist es in der Tat sehr schwer Konten auf Mobil zu wechseln, so sicher sein, nicht für loggin in mehreren Konten bereit zu haben, wie es mit Facebook SDK vermasselt. Haben nur ein Konto angemeldet.
  • Beachten Sie, dass, sobald jemand in auf Facebook SDK, FB SDK kümmert sich nicht angemeldet ist, dass Sie mit einem anderen Konto anmelden versuchen, stattdessen macht er alle Anfragen veröffentlicht Zeug auf dem letzten (oder aktuellen) Konto angemeldet.
  • Und wenn Sie Facebook-Integration mit Ihrer App testen, stellen Sie sicher, dass Ihre App nicht LIVE (das kleine grüne Symbol in der Nähe der App in Facebook Developers Console) und Es ist in DEVELOPMENT-Modus, und Sie testen mit dem Benutzer Tester Rolle zugewiesen.
Verwandte Themen