A couple words of advice:

Nearly any third-party authentication system will require that you
perform the login process in a web browser, but you should still use
one even for desktop apps.  Systems that ask you to create a login are
almost anachronistic these days.  Use google login, or facebook login
if you are feeling adventurous.  You'll need to use a web browser
widget to perform the login, get an access token out of it, and use
that for further requests.  If you're building mobile apps, Facebook's
SDK for iPhone and Android abstract this process away easily.

I don't know if you can easily reverse engineer appengine's channel
API for use from your client code.  But if you are happy with polling,
you might find Objectify's builtin memcache integration handy.  It
will transparently cache your entity data in the memcache for cheap
and efficient reads.

Jeff

On Tue, Jan 18, 2011 at 11:05 AM, Spk <william.rava...@googlemail.com> wrote:
> Hi Didier, thanks for your reply.
>
> I forgot to mention that my game client is a stand-alone application
> (desktop & mobile), not a regular web page, so I'm quite restricted in
> term of "web" capabilities on the client side. Right now, all I can do
> is GET & POST http requests, and possibly provide additional header
> data.
>
> 2) Does the login service allow me to register new accounts and
> authenticate users via my own user interface, or is it only possible
> to do so by redirecting to an existing google web page for login/
> account creation? What I'm looking for is a user management framework/
> API that allows me to check if a user exists, if he's signed in,
> create a new account, and sign in an existing account. Is that what
> google login service can provide? What do they mean by "accounts on
> your own Google Apps domains"?
>
> 3) From the doc I gather that one needs some functionalities provided
> by JavaScript to properly/easily use this feature. Is it possible to
> implement this without too much troubles if all I have at my disposal
> is access to raw socket functionalities? My game is not going to be
> very fast paced, and I think I don't need to poll for new events
> faster than every 5 or 10 seconds. Would it still be beneficial to use
> the Channel API?
>
> Thanks for your help,
>
> On Jan 18, 7:07 pm, Didier Durand <durand.did...@gmail.com> wrote:
>> Hi,
>>
>> 1) You are right: storing in ds is required in your case
>>
>> 2) You could use the Google Login service: very secured and will take
>> care of login persistence for you
>> Seehttp://code.google.com/appengine/docs/java/users/
>>
>> 3) Channel API is done to meet you needs (even at very high rate of
>> polling): seehttp://code.google.com/appengine/docs/java/channel/overview.html
>>
>> regards
>>
>> didier
>>
>> On Jan 17, 9:32 pm, Spk <william.rava...@googlemail.com> wrote:
>>
>>
>>
>>
>>
>>
>>
>> > Hi folks!
>>
>> > I just got started with Google App engine (using Java) and it's great!
>> > I'm trying to develop a backend for an asynchronous turn-based game
>> > I'm working on in my spare time. My plan was to develop a REST-ish API
>> > that my game client would consume & poll periodically for updates. You
>> > can picture the game as a kind of chess game with only one multi-
>> > purpose pawn for each player (their character). Each player takes a
>> > turn to make his move (attack, defense, etc), until one of the
>> > characters dies. Pretty basic.
>>
>> > Now it's the first time I'm writing a backend on top of being a google
>> > app engine newbie, so there are a few areas I'm still a bit uncertain
>> > about. I would really appreciate if some of you knowledgeable folks
>> > could spare a bit of your time to give some advices on how to best
>> > design this server. I'm using Objectify and the basic javax.servlet
>> > framework to receive and submit requests.
>>
>> > Here are my questions:
>> > 1) A game between two players can theoretically last days. From what I
>> > understand, I should store each player's move in the datastore,
>> > correct? My initial reflex was to just keep the game session data in
>> > the memcache but then I read that it was not a correct use-case, as it
>> > the oldest cached elements can be removed from the cache at any time
>> > to make room for newer data in case it's running low on memory. Also,
>> > I should not simply be storing this data in my "java
>> > objects" (instance memory) as idle instances of my app can be killed
>> > at any time by google app engine to free up resources, is that
>> > correct?
>> > 2) I'm going to need some way to identify individual users and save
>> > persistent progress stats (level, experience, etc). I was thinking of
>> > rolling a simple User class and prompt new players to create an
>> > account with username & password. What is the best way of storing that
>> > sensitive data (mp5 hash I suppose?). Also, how can I ensure that a
>> > move request comes from the desired user? Do I need to use some kind
>> > of secret key delivered to the user upon login and that would have to
>> > be included in all subsequent requests? Do I just check the requester
>> > IP? If so, how do you handle people behind corporate routers seen as a
>> > single IP by the outside world?
>> > 3) Is it ok to have the game client poll for game status update every
>> > 5 seconds? Data sent back by the server would, for instance, include
>> > the most recent move of the other player and manage player turn
>> > assignment.
>>
>> > Thanks, I'll probably have more questions later! :)
>
> --
> You received this message because you are subscribed to the Google Groups 
> "Google App Engine for Java" group.
> To post to this group, send email to google-appengine-java@googlegroups.com.
> To unsubscribe from this group, send email to 
> google-appengine-java+unsubscr...@googlegroups.com.
> For more options, visit this group at 
> http://groups.google.com/group/google-appengine-java?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine for Java" group.
To post to this group, send email to google-appengine-java@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.

Reply via email to