Search Unity

[Closed] Social Networking Plugin (Facebook and Twitter) live!

Discussion in 'iOS and tvOS' started by prime31, Sep 19, 2010.

  1. haitcheng

    haitcheng

    Joined:
    Mar 6, 2012
    Posts:
    3
    Hi Prime,
    for fb plugin, I don't know how to both show a post dialog and post a screenshot instead of link image.
    this function: "FacebookBinding.showPostMessageDialogWithOptions(ht);" could only link a image, while "FacebookBinding.postImage" post screenshot but never show anything to the users, it just post image directly to user's wall.

    My game requirement is to show a dialog when the user got a new score, he could post a screen shot while custom some message throught the custom dialog and post to his wall. How to do this?


    for twitter plugin, i just "TwitterBinding.showOauthLoginDialog()", but when i click the authentication it genereate a PIN and said go back to game to enter the pin, this is too many steps for the user to post a message. Is it required to get the xAuth if I want to get a simple authentication? Graph and REST API might be too difficult for me so I wonder if there is a simple way to get my problem solved. For twitter I just want to post a message, now i don't know how to get the authentication.
     
    Last edited: Mar 6, 2012
  2. prime31

    prime31

    Joined:
    Oct 9, 2008
    Posts:
    6,426
    @haitch, Facebooks dialogs do not support image uploads. To use a dialog you must have it already available on a server so that you can send the link to the image to the dialog.
     
  3. haitcheng

    haitcheng

    Joined:
    Mar 6, 2012
    Posts:
    3
    Thanks Prime. Seems I could only call both "showPostMessageDialogWithOptions" and "postImage" to do this.

    For twitter authentication, I see on this thread there are other people who encountered the same problem.
    i did not see where to set my app type as a "web", but I do see the callback url. when i set this url to something, the pin page did not appear again, but i still could not post anything to twitter. After first authentication from the poping the pages, it did not pop anything again but also did not post anything.
     
  4. haitcheng

    haitcheng

    Joined:
    Mar 6, 2012
    Posts:
    3
    Hey Prime,

    When I set something in callback url, the page redirecting to my game, "TwitterBinding.postStatusUpdate" with only text works!
    But when I add a image path for the second param, it did nothing.
     
  5. prime31

    prime31

    Joined:
    Oct 9, 2008
    Posts:
    6,426
    @haitch, ensure that your path is actually legit by simply calling File.Exists on it. If it is not a valid path no image will be posted. You also must make sure that you leave enough spare characters for the t.co image url.
     
  6. J_P_

    J_P_

    Joined:
    Jan 9, 2010
    Posts:
    1,027
    Trying to send a message to a facebook friend.

    https://developers.facebook.com/docs/reference/dialogs/send/

    Code (csharp):
    1.             var messageOptions = new Dictionary<string, string>(){
    2.                 {"link", "http://justinteractive.tv"},
    3.                 {"app_id", "myappid"},
    4.                 {"to", "JTown1986"},
    5.                 {"name", "fb testing"},
    6.                 {"description", "success"},
    7.                 {"display", "touch"}
    8.             };
    9.                
    10.             FacebookBinding.showDialog("send", messageOptions);
    11.  
    I get this:


    Any ideas?

    By the way, there's no way to send a regular message instead of a link, right?
     
    Last edited: Mar 9, 2012
  7. prime31

    prime31

    Joined:
    Oct 9, 2008
    Posts:
    6,426
    @JTown, not all dialogs are available in Facebook's native SDKs. It appears send is not available judging by the error message. You may want to check the Graph API for sending a message. It is quite full featured and contains a ton of methods.
     
  8. J_P_

    J_P_

    Joined:
    Jan 9, 2010
    Posts:
    1,027
    I've gotten the hang of GET and POST via graph api -- cool tool. But now that I'm using it to get more than one kind of request, I need some way to handle the receiving end for facebookDidReceiveCustomRequest(). If I request friend list info, I need to parse the object I get back. If I post on someone else's wall, I instead need to NOT try and parse the data as a friend.

    I thought of doing something like this:
    -request friend list, set to lookout for incoming friend list
    -post on someone's wall, set to lookout for confirmation of wall post

    But that doesn't seem reliable. If a request fails, they'd get out of order. Or hell, if facebook responds out of order (is that possible?) that'd kill it too.

    The objects we get back from facebook are kind of generic, so how can we go about differentiating between two similar requests that get back the same data types. What'd be nice is if we sent some identifier with the request, and the result included the same identifier so we could confirm the receipt.

    How have others solved this?
     
    Last edited: Mar 12, 2012
  9. prime31

    prime31

    Joined:
    Oct 9, 2008
    Posts:
    6,426
    @Jtown, I personally have a very simple approach. For each request I send I store the event handler in a Dictionary. When the facebookDidReceiveCustomRequest event fires a check on the result is done by looking for a key that only exists in the expected response types. From there the original event handler is called and then removed from the dictionary.

    On a related note we have a new piece of the plugin coming soon for more advanced users that will work cross platform. It is a class that you instantiate with the access token after login and then you use it for all Graph API requests. It handles multiple requests seemlessly and always fires the correct event handler.
     
  10. RedVonix

    RedVonix

    Joined:
    Dec 13, 2011
    Posts:
    422
    Hey Prime,

    Got the Social Plugin installed in our upcoming game, Tumblecaps Retro. We're trying to add a 'Follow Us!' button. The code appears to follow the rules of both your plugin and the Twitter API, however the user does not end up getting followed. Is there anything in the following code that jumps out as clearly incorrect?

    var dict = new Dictionary<string,string>();
    dict.Add( "follow", "true" );
    dict.Add( "screen_name", "@CeruleanGames" );
    TwitterBinding.performRequest( "POST", "/friendships/create.json", dict );

    Thanks in advance! :D
     
  11. prime31

    prime31

    Joined:
    Oct 9, 2008
    Posts:
    6,426
    @D, what is the output of the event handlers? Did the failed or succeeded event fire? Also, are you sure the screen name should have an "@"? I have never seen that in Twitters docs when referring to screen names.
     
  12. shadowfork

    shadowfork

    Joined:
    Jan 8, 2010
    Posts:
    167
    Hello all.

    I'm trying to post a score via graphRequest (I do have the values for fbid and token variables):
    Code (csharp):
    1. var tempString : String = fbid + "/scores?score="+ score + "&access_token=" + token;
    2. FacebookBinding.graphRequest( tempString, "POST", new Hashtable() );
    But I get this error:
    Code (csharp):
    1. error description: Error Domain=facebookErrDomain Code=10000 "The operation couldn’t be completed. (facebookErrDomain error 10000.)" UserInfo=0x7589200 {error=<CFBasicHash 0x7584ad0 [0x3f39e9f8]>{type = mutable dict, count = 3,
    2. entries =>
    3.     2 : <CFString 0x2201be0 [0x3f39e9f8]>{contents = "type"} = <CFString 0x7564790 [0x3f39e9f8]>{contents = "OAuthException"}
    4.     3 : <CFString 0x2207950 [0x3f39e9f8]>{contents = "message"} = <CFString 0x7564510 [0x3f39e9f8]>{contents = "(#15) This method must be called with an app access_token."}
    5.     6 : <CFString 0x7574b10 [0x3f39e9f8]>{contents = "code"} = 15
    6. }
    7. }
    8. 2012-03-15 10:32:07.554 flipriders[1455:707] error userInfo: {
    9.     error =     {
    10.         code = 15;
    11.         message = "(#15) This method must be called with an app access_token.";
    12.         type = OAuthException;
    13.     };
    14. }
    15. facebookCustomRequestFailed failed: The operation couldn’t be completed. (facebookErrDomain error 10000.)
    16.  
    17. (Filename: /Applications/buildAgent/work/b0bcff80449a48aa/Runtime/ExportGenerated/iPhonePlayer-armv7/UnityEngineDebug.cpp Line: 43)
    Can anyone give any clue/tips?

    Basically I want to be able to work with the graph API and do other stuff with it.

    Thanks in advance!
     
    Last edited: Mar 14, 2012
  13. CPXTom

    CPXTom

    Joined:
    Apr 24, 2010
    Posts:
    113
    We've implemented tweeting messages + photos in our app, everything has been working fine up until today. Today most of the time when I try I get "Successfully posted to Twitter" in the console, but nothing is posted to my twitter account. I say most of the time because I have gotten a console output of a bunch of html, which was basically the twitter over capacity page. Is this an issue with Twitter or maybe just something weird on my end (as I mentioned it was working before, don't believe I've changed anything)?

    Thanks!
     
  14. J_P_

    J_P_

    Joined:
    Jan 9, 2010
    Posts:
    1,027
    If it's an over capacity page, couldn't the problem be that twitter is over capacity and you won't be able to send/receive tweets until they've recovered?
     
  15. prime31

    prime31

    Joined:
    Oct 9, 2008
    Posts:
    6,426
    @shadow, the error message seems pretty clear: "This method must be called with an app access_token". You have to pass in an app access token for that method. If you don't know what it is or how to get it check out Facebooks docs for the details.


    @Rab, the over capacity page is most definitely a Twitter issue.
     
  16. CPXTom

    CPXTom

    Joined:
    Apr 24, 2010
    Posts:
    113
    Yeah, I realize the over capacity thing is, I should have phrased the question better :)

    Is it possible, if there are issues with twitter, that the plugin would still report the post had been successfully posted?
     
  17. prime31

    prime31

    Joined:
    Oct 9, 2008
    Posts:
    6,426
    @Rab, the plugin reports back what the API does. They don't properly error out when their servers go haywire most likely because their servers are busy pooping themselves.
     
  18. shadowfork

    shadowfork

    Joined:
    Jan 8, 2010
    Posts:
    167
    Thanks for the tip. I thought I was suppose to use the token from FacebookBinding.getFacebookAccessToken();

    So I found in the docs on how to get the app access token: https://developers.facebook.com/docs/authentication/#redirect-uris

    ... but I still couldn't get any value when I run this code:

    Code (csharp):
    1. var tempString : String = "oauth/access_token?client_id=" + appID + "&client_secret=" + secret + "&grant_type=client_credentials";
    2. FacebookBinding.graphRequest( tempString, "GET", new Hashtable() );
    I only get this return from the log: facebookDidExtendTokenEvent: 09/14/1979 19:09:52

    However, if I use the same method above via WWW, I get the access_token=somenumb3rvalu3s|4nds0m3m0r3

    Any thoughts?
     
  19. RedVonix

    RedVonix

    Joined:
    Dec 13, 2011
    Posts:
    422

    Prime,

    The succeeded event fired. I did a quick output and here is what it is saying:
    "error Could not authenticate with OAuth."

    I tried removing the @ from the username (I had it in there as it was how the examples on Twitter's site had the usernames setup).

    The OAuth error caused me to try a few more things, which all had the same error as above. The following was my most recent attempt, which seemed like it should have been the successful one based on the OAuth rules, but no luck (obviously with the actual token and secret removed for security)

    var dict = new Dictionary<string,string>();
    dict.Add( "follow", "true" );
    dict.Add( "user_id", "1401881" );
    dict.Add( "oauth_token", "<Token>" );
    dict.Add( "oauth_token_secret", "<Secret>" );
    TwitterBinding.performRequest( "POST", "/friendships/create.json", dict );
     
  20. prime31

    prime31

    Joined:
    Oct 9, 2008
    Posts:
    6,426
    @shadow, from the looks of it, you may just have to do a standard WWW request to get the app access token. It appears that while the URL begins with "graph.facebook.com" One other thing you could try doing something like this:

    var ht = new Hashtable();
    ht.Add( "client_id", appId );
    ht.Add( "client_secret", appSecret );
    FacebookBinding.graphRequest( "oauth/access_token", "GET", ht );


    @D, any calls to performRequest automatically have the consumer secret, token and consumer key added. The error indicates that authenticiation has not yet occurred. Did you login and get the twitterLogin event?
     
  21. RedVonix

    RedVonix

    Joined:
    Dec 13, 2011
    Posts:
    422
    I am logging in, but not every time if the user has already previously logged in. I perform this check before doing anything else Twitter related to ensure that a login exists:

    if(!TwitterBinding.isLoggedIn() || !TwitterBinding.canUserTweet())

    Do I still need to call the TwitterBinding.showOauthLoginDialog(); function each time for the authentication to be properly stored on each run of the application?
     
  22. prime31

    prime31

    Joined:
    Oct 9, 2008
    Posts:
    6,426
    @D, the access token is persisted so there is no need to call it more than once. Another thing to double check is that you setup your app with read/write access on Twitter dev portal.
     
  23. RedVonix

    RedVonix

    Joined:
    Dec 13, 2011
    Posts:
    422
    Aye, the application is indeed setup with read and write.
     
  24. J_P_

    J_P_

    Joined:
    Jan 9, 2010
    Posts:
    1,027
    @Shadow

    That's not how I do it. Here's some sample code I wrote to post on someone's wall (in this case my wall, but 'me' can be any person's id as long as you have the permissions). In terms of how I use the url and hashtable, I imagine the same concept would apply to posting scores.

    Code (csharp):
    1.         Hashtable Hash = new Hashtable();
    2.         Hash.Add("access_token", FacebookBinding.getFacebookAccessToken());
    3.         Hash.Add("message", "The message to post on their wall");
    4.         FacebookBinding.graphRequest("/me/feed", "POST", Hash);
    edit: to clarify, the only time I need to do stuff like "/scores?score" is when I'm asking for data, not sending it. I used it to get friends list and extra fields from each friend without multiple graph api calls. When I post data, I include it in the hashtable
     
    Last edited: Mar 15, 2012
  25. ScaryRobotGames

    ScaryRobotGames

    Joined:
    May 2, 2007
    Posts:
    57
    I'm getting mixed results with the twitter login:

    After the twitter login screen it reports "Successfully logged in to Twitter" in the xCode console and isLoggedIn() returns true. But twitterLogin() never fires and canUserTweet() always returns false.

    I double checked that my dev.twitter oAuth access level is set to "Read and write" and I've tried using a couple of different twitter accounts that are active.
     
  26. prime31

    prime31

    Joined:
    Oct 9, 2008
    Posts:
    6,426
    @dustin, I can't reproduce what you are seeing with the demo scene. Do you have the same behavior that you are describing with the demo scene? Also, canUserTweet has nothing to do with logging a user in. That method checks to see if the user can use the iOS 5 tweet sheet. It has nothing to do with any login that you initiate.
     
  27. ScaryRobotGames

    ScaryRobotGames

    Joined:
    May 2, 2007
    Posts:
    57
    Cool! I didn't realize it was associated with the tweet sheet. In that case, I'll drop that.

    The problem centers around showTweetComposer(). When I run it, nothing happens. I thought that a login snafu might be the cause (hence the canUserTweet() test). But it seems to be logged in. I tried showTweetComposer() (since values we're optional) with no data but the compile failed. So I tried showTweetComposer("","") but nothing happens when it executes. So I put in some values: showTweetComposer("test","http://www.mediumedge.com/wwcLogo.jpg") but still had the same result. Nothing. Since showTweetComposer() doesn't fire off any events, for clues, I don't know how to proceed from here.

    Can't test it. For some reason Twitter doesn't like the consumerKey and consumerSecret with the demo although it performs fine in my scene.


    EDIT: I just tried out TwitterBinding.postStatusUpdate("Testing. Just testing.") and it DID post on twitter. So I am logged in but for some reason showTweetComposer() just won't display the composer. BTW, the Facebook side of things is behaving perfectly.
     
    Last edited: Mar 15, 2012
  28. shadowfork

    shadowfork

    Joined:
    Jan 8, 2010
    Posts:
    167
    @ JTown Prime31

    Thanks guys! Those are very helpful tips. Will give it a go when I get to my desk.

    Prime32 plugins + support = AWESOME!
     
  29. prime31

    prime31

    Joined:
    Oct 9, 2008
    Posts:
    6,426
    @dustin, the tweet composer requires iOS 5 and the user must have a Twitter account setup with iOS.
     
  30. ScaryRobotGames

    ScaryRobotGames

    Joined:
    May 2, 2007
    Posts:
    57
    @Prime31 There's the missing element. I didn't realize that the twitter app had to be installed to get the composer up. I installed the app and the composer now pops up.

    Thanks for the help!
     
  31. CPXTom

    CPXTom

    Joined:
    Apr 24, 2010
    Posts:
    113
    I found out why my tweets weren't going through yesterday. It looks like if you have your twitter account set to HTTPS only (under Account settings), tweets from my app won't go through. Is this an issue with how my twitter app is set up, or an issue with the plugin? Thanks!
     
  32. prime31

    prime31

    Joined:
    Oct 9, 2008
    Posts:
    6,426
    @Rab, any recent versions of the plugin will use https for everything. When Twitter made that change many months back we changed all request urls to be https.
     
  33. CPXTom

    CPXTom

    Joined:
    Apr 24, 2010
    Posts:
    113
    Looks like you guys missed one spot, in the postStatusUpdate:withImageAsPath method it was using http, instead of https in the url. Once I added that everything worked fine :)
     
  34. prime31

    prime31

    Joined:
    Oct 9, 2008
    Posts:
    6,426
    @Rab, good spot! Not sure how we missed that one. We will push out an update later today.
     
  35. qamar

    qamar

    Joined:
    Dec 26, 2011
    Posts:
    1
    Hi
    I am getting this when i go with oAuth method and when in app browser is shown. I've set the callback URL and Tried with Application Type
    1) Read Only
    2) Read and Write
    3) Read and Write and access direct messages


     
  36. loock_

    loock_

    Joined:
    Aug 4, 2010
    Posts:
    18
    Last edited: Mar 16, 2012
  37. prime31

    prime31

    Joined:
    Oct 9, 2008
    Posts:
    6,426
    @qamar, it sounds like you may have incorrectly set your information from the Twitter portal. Double check that the values being passed to init match the portal exactly.
     
  38. shadowfork

    shadowfork

    Joined:
    Jan 8, 2010
    Posts:
    167
    So I'm still not having much luck with graph API here. :(

    See, I'm simply trying to pull a publicly available picture (no permission required)

    When I use this graphRequest code:
    Code (csharp):
    1. FacebookBinding.graphRequest( "100003429183160/picture", "GET", new Hashtable() );
    I get this error:
    Code (csharp):
    1. facebookReceivedCustomRequest
    2.  
    3. (Filename: /Applications/buildAgent/work/b0bcff80449a48aa/Runtime/ExportGenerated/iPhonePlayer-armv7/UnityEngineDebug.cpp Line: 43)
    4.  
    5. Current language:  auto; currently asm
    6. warning: No copy of <No file name> found locally, reading from memory on remote device.  This may slow down the debug session.
    7. kill
    8. quit
    9. Program ended with exit code: 0
    But if you stick this to a browser: https://graph.facebook.com/100003429183160/picture

    It just works fine.

    How do you guys make graph api calls work?
     
  39. prime31

    prime31

    Joined:
    Oct 9, 2008
    Posts:
    6,426
    @shadow, image requests don't need to go through the graphRequest method. You can get the raw image data directly with the WWW class.
     
  40. shadowfork

    shadowfork

    Joined:
    Jan 8, 2010
    Posts:
    167
    My dilemma is I can't get anything to run on the graphRequest() calls.

    The image was just an example, but I would like to pull/push other data vai graphRequest.

    So are you saying we should use WWW class rather than graphRequest()?

    It wasn't necessary to pull the pic from the plugin ... I was just hoping to see it work. I'm trying to figure out why I can't do anything besides posting to a wall.

    Thank you.
     
  41. prime31

    prime31

    Joined:
    Oct 9, 2008
    Posts:
    6,426
    @shadow, any image requests do not have to go through the graphRequest method. Only Graph API endpointa that require authentication and return raw data should go through the method. When dealing with the Graph API make sure you have requested any permissions that are required. Facebooks error messages usually let you know if a permission is missing.
     
  42. shadowfork

    shadowfork

    Joined:
    Jan 8, 2010
    Posts:
    167
    Thank you for that info.
     
  43. CPXTom

    CPXTom

    Joined:
    Apr 24, 2010
    Posts:
    113
    Hey again!

    We're experiencing a weird bug with using FacebookBinding.postImage. It works for the most part, but there's a facebook account that will only sporadically work. Sometimes the image posts and sometimes it doesn't, facebook doesn't look like it's returning any kind of error when it doesn't. I've looked at the account settings and everything appears fine, the app has permission to post on their behalf. Any ideas?
     
  44. prime31

    prime31

    Joined:
    Oct 9, 2008
    Posts:
    6,426
    @rob, if it works sporadically the only thing I could think of is that if the message is the same the dupe post filter might be kicking in. You may want to open a bug with the FB crew as they have full visibility on what's happening.
     
  45. RedVonix

    RedVonix

    Joined:
    Dec 13, 2011
    Posts:
    422
    I'm afraid I am still rather stuck on the same Twitter Oauth issue from the other week. It looks like if I include the "oauth_token" with my request, then I am successfully able to make a user follow a Twitter account - however I cannot seem to make them follow the CeruleanGames account.

    So the following does work:
    var dict = new Dictionary<string,string>();
    dict.Add( "follow", "true" );
    dict.Add( "user_id", "1401881" );
    dict.Add( "oauth_token", "REMOVED FOR POST" );
    TwitterBinding.performRequest( "POST", "/friendships/create.json", dict );

    And that goes to someone elses Twitter account. (Twitter reported that their user ID was mine, so I tried that. Ended up being someone elses ID entirely, but I am able to follow them).

    However, the following code gives me an OAuth authentication error:
    var dict = new Dictionary<string,string>();
    dict.Add( "follow", "true" );
    dict.Add( "screen_name", "CeruleanGames" );
    dict.Add( "oauth_token", "REMOVED FOR POST" );
    TwitterBinding.performRequest( "POST", "/friendships/create.json", dict );

    It seems like that means there is something wrong with the settings in our Twitter account - but I've verified everything is Read / Write, and we're using HTTPS for everything.

    What else can I check to see why this would not be working?
     
  46. prime31

    prime31

    Joined:
    Oct 9, 2008
    Posts:
    6,426
    @D, I have no idea why an account couldn't be followed. Shoot a request over to the Twitter crew and they might have some more insight.
     
  47. RedVonix

    RedVonix

    Joined:
    Dec 13, 2011
    Posts:
    422
    Prime, thanks for the help! I'll ping them and see if they have any idea what's going on. :)
     
  48. Bedbug

    Bedbug

    Joined:
    Feb 5, 2011
    Posts:
    26
    Hey,

    can anyone share an example code for Prime31's plugin using a custom graph call that posts a message from the user to a friend's wall?
     
  49. opsive

    opsive

    Joined:
    Mar 15, 2010
    Posts:
    5,127
    I just started to get Facebook integrated, and it has all been seamless except for one thing: I can't show the dialog with options immediately after the user logs in. If the user logs in successfully, I want to post something on their wall following the login. Here's the code that I am using:

    Code (csharp):
    1.  
    2.     public void facebookLogin
    3.     {
    4.         if (FacebookBinding.isLoggedIn()) {
    5.             postFacebookMessage();
    6.         } else {
    7.             FacebookBinding.init("ID");
    8.             SocialNetworkingManager.facebookLogin += OnFacebookLogin;
    9.            
    10.             FacebookBinding.login();
    11.         }
    12.     }
    13.    
    14.     public void OnFacebookLogin()
    15.     {
    16.         print ("is logged in: " + FacebookBinding.isLoggedIn());
    17.         SocialNetworkingManager.facebookLogin -= OnFacebookLogin;
    18.        
    19.         postFacebookMessage();
    20.     }
    21.    
    22.     public void postFacebookMessage()
    23.     {
    24.         var ht = new Hashtable();
    25.         ht.Add( "link", "http://prime31.com" );
    26.         ht.Add( "picture", "http://prime31.com/assets/images/prime31logo.png" );
    27.         ht.Add( "name", "Name of the link" );
    28.         ht.Add( "caption", "Im the prime31 logo" );
    29.         ht.Add( "description", "some text telling what this is all about" );
    30.         FacebookBinding.showPostMessageDialogWithOptions( ht );
    31.     }
    32.  
    The console is outputting:
    Right before this error message is the URL of the dialog. If I go to this URL in a browser the dialog appears successfully (in the browser, of course). If I click on the Facebook button again inside Unity the dialog appears successfully, it is just right after login that it fails. I've tried using "showPostMessage" but that fails as well. Posting to my wall without a dialog appearing works correctly (such as postMessage("message")).

    Does anybody have any ideas what is causing this? There have been numerous posts of people just ignoring this error...

    Thanks,
    Justin
     
    Last edited: Mar 28, 2012
  50. jerotas

    jerotas

    Joined:
    Sep 4, 2011
    Posts:
    5,572
    Prime31, I am wondering how the heck to get the "iPhone App Store ID" before the game is submitted to apple? I tried putting my AppleID there from iTunes Connect but it doesn't work. When I tried to save that on the Facebook developers page, I got "Your iPhone App Store ID is invalid because the iTunes App Store reports your app as being unavailable for iPhone and iPod touch.".

    Do we actually have to submit the app before we can start integrating with Facebook? I was really hoping to get this in the first version, not a patch of the game.

    hm....strangely it seems to have save the second time....never mind :)
     
    Last edited: Mar 28, 2012