2016-04-21 17:06 GMT+08:00 Thomas Mortagne [via XWiki] < [email protected]>:
> On Thu, Apr 21, 2016 at 9:50 AM, fitz <[hidden email] > <http:///user/SendEmail.jtp?type=node&node=7599118&i=0>> wrote: > > > Hi Thomas, > > > > 2016-04-20 23:11 GMT+08:00 Thomas Mortagne [via XWiki] < > > [hidden email] <http:///user/SendEmail.jtp?type=node&node=7599118&i=1>>: > > > > >> Actually after thinking more about it session id does not seems such a > >> good idea in practice: sessions are quite short lived scope and users > >> might end up authenticating again and again. Also when synchronizer > >> wake up there is a good chance the session is dead and we are not > >> going to constantly ask credential to the user out of the blue for > >> what is supposed to be an invisible background task. > >> > >ed > > Yeah, As we have discussed, there are three ways for the user app to > > authenticate and communicate with XWiki-server: > > 1.session id > > It may be the best and simple choice because user app just gets > sessionid > > from the authenticator and doesn't need to know username and passwd. > > However as you have said, sessions are quite short lived scope and maybe > it > > is dead while the user app is using. That's really a big problem. Maybe > > there are some methods to avoid this failure. For example, the > > authenticator can send the sessionid with expiration time. When it's > > expired, ask for the sessionid again. Or, the authenticator also can > send > > broadcast to all user apps when the session is expired. User apps ask to > > get a new sessionid while receiving the broadcast. > > > > 2. Basic Auth > > if the user app use the BASIC auth header(Base64) to authenticate with > > XWiki-server, there's no security at all because Base64 is easy to > decode > > and all user apps can decrypt and get username and passwd easily. So I > > think only in this case that we trust all the user apps, for example > these > > apps are signed and released by us, the authenticator can return Base64 > to > > user apps. > > I don't think it's required. AFAIK application need user authorization > to access an authenticator. Having the authenticator work only with > application we write make it pretty much useless IMO since the main > goal is to make easier for application to manipulate XWiki instances. > If an application cannot use the authenticator it will simply ask the > user/password to the user anyway. > > > 3. A preconfigured httpclient/httpurlconnection > > To be honest, I don't know how to achieve this method and how to provide > a > > preconfigured httpclient instance. That means returning the serialized > > httpclient by the authenticator service? And maybe services with "aidl" > > can just return all primitive types( > > http://developer.android.com/guide/components/aidl.html#Create), like > int, > > char and list<int>, so we cann't provide a preconfigured httpclient > object > > to the other apps. Or maybe we can provide all the restful apis as a > > library in our authenticator, in this way, httpclient is invisible to > user > > apps. But it may cause a lot of work. Really confused! :) > > I didn't had time to play with it so not sure if it make sense but > what I had in mind is that getAuthToken return a Bundle and not a > String. And Bundle seems to have the possibility to contain many kind > of objects associated to a custom String key. As far as I can see you > don't really have a put(String, Object) but maybe this can go trough > put(String, Serializable) since Bunlde itself does not seem to > serialize it and maybe it's taking a Serializable just in case and is > really serialized in rare cases (I don't see why Android would need to > store the token most of the time). So maybe an app could do something > like bundler.get("org.apache.http.client.HttpClient") and get a > pre-configured (and protected) instance of > org.apache.http.client.HttpClient. To be tested I guess. > > Ok, I see. Thank you so much. I will try to implement these methods and test their effectiveness ASAP, ha ha. Thanks, Fitz > > > > > > > >> On Tue, Apr 19, 2016 at 12:57 PM, Thomas Mortagne > >> <[hidden email] <http:///user/SendEmail.jtp?type=node&node=7599102&i=0>> > > >> wrote: > >> > >> > On Tue, Apr 19, 2016 at 12:56 PM, Thomas Mortagne > >> > <[hidden email] < > http:///user/SendEmail.jtp?type=node&node=7599102&i=1>> > >> wrote: > >> >> On Fri, Apr 15, 2016 at 6:25 AM, fitz <[hidden email] > >> <http:///user/SendEmail.jtp?type=node&node=7599102&i=2>> wrote: > >> >>> Hello Thomas, > >> >>> > >> >>> Thank you very much and I really appreciate your help and guidance. > >> And > >> >>> thank you for helping me improve. > >> >>> > >> >>> I will firstly use the existing REST APIs to develop this project, > And > >> >>> maybe in the future I can make some specific APIs to improve > >> performance if > >> >>> time permits. > >> >>> > >> >>> Yes, the search APIs can help me get need-update contacts after the > >> >>> last-sync-time and solve the one by one comparing problem. And I > will > >> be > >> >>> familiar with the use of search APIs as soon as possible so that I > can > >> use > >> >>> it in the synchronization code. Thank you for solving my > confusion. > >> >>> > >> >>> And for authentication and security, considering your precious > advice, > >> I > >> >>> will try to use the first idea, and just return the session so that > >> other > >> >>> xwiki android apps can use the httpclient with this session id to > >> >>> authenticate with the server. And I will firstly implement this > >> method and > >> >>> test the effectiveness of this scheme as soon as possible. > >> >> > >> >> All that sounds good. > >> >> > >> >>> > >> >>> For the xwiki-contrib, I will ask to join the group, develop this > >> android > >> >>> project and maybe make a contribution. > >> >> > >> >> Looks like you are already member of XWiki Contrib actually. > >> > > >> > Just saw the other mail (I'm a bit late with my mails...). > >> > > > > Never mind, Thank you anyway all the same. :) > > > > Recently I have learned and understood solr query, restful apis and > > xmlpullparser. Now the android-authenticator can basically communicate > with > > the XWiki-server to get all the contacts. I have commit my code to the > > feature-rest branch of the android-authenticator repository. As soon as > > possible I will implement the ideas above and test the effectiveness. > There > > may be some other difficult issues in the future. > > > > Best Regards, > > Fitz Lee > > > >> > >> >> > >> >>> > >> >>> Yours sincerely > >> >>> Fitz Lee > >> >>> > >> >>> > >> >>> 2016-04-14 17:33 GMT+08:00 Thomas Mortagne [via XWiki] < > >> >>> [hidden email] < > http:///user/SendEmail.jtp?type=node&node=7599102&i=3>>: > >> > >> >>> > >> >>>> On Thu, Apr 14, 2016 at 7:22 AM, Fitz Lee <[hidden email] > >> >>>> <http:///user/SendEmail.jtp?type=node&node=7598982&i=0>> wrote: > >> >>>> > >> >>>> > Hi Thomas, > >> >>>> > > >> >>>> > > >> >>>> > Thank you so much for your reply and recognition. > >> >>>> > > >> >>>> > > >> >>>> > 2016-04-12 17:18 GMT+08:00 Thomas Mortagne <[hidden email] > >> >>>> <http:///user/SendEmail.jtp?type=node&node=7598982&i=1>>: > >> >>>> > > >> >>>> >> Hi Fitz, > >> >>>> >> > >> >>>> >> Great to see so much motivation from you :) > >> >>>> >> > >> >>>> >> Just don't forget that GSOC coding period is not started yet > and > >> that > >> >>>> >> we still have no idea how many slots Google will give us and > who > >> we > >> >>>> >> will select this year (this will be 22nd April). > >> >>>> >> > >> >>>> >> > >> >>>> > Yeah, I know the coding period of GSoC, and now I'm just > striving > >> and > >> >>>> > looking forward to get this project. If I really do not pass the > >> GSoC > >> >>>> > application, it doesn't matter and I have learned a lot. As I > have > >> said, > >> >>>> I > >> >>>> > will be very happy if there is anything I can help. > >> >>>> > > >> >>>> > > >> >>>> >> Yes contact synchronization in > >> >>>> >> https://github.com/xwiki-contrib/android-authenticator is not > the > >> >>>> >> beginning or an experiment I never had time to finish so it's > more > >> >>>> >> pseudo code that never worked yet. > >> >>>> > > >> >>>> > > >> >>>> > Considering the XWikiRESTfulAPIs in > >> >>>> > > http://platform.xwiki.org/xwiki/bin/view/Features/XWikiRESTfulAPI, > >> the > >> >>>> apis > >> >>>> > have been well designed so that maybe I can't modify those apis. > I > >> >>>> should > >> >>>> > just make use of the existing api resources to design the > >> >>>> synchronization > >> >>>> > of contacts and the process of sign-in and sign-up. > >> >>>> > > >> >>>> > Since there isn't the api like "/sync" in sampleSyncAdapter > >> >>>> > google-engine-server, which can help us to get update contacts > when > >> >>>> sending > >> >>>> > the phone's dirty contacts and the last time of synchronization > to > >> >>>> server, > >> >>>> > we cann't use the synchronization mechanism in > SampleSyncAdapter. I > >> >>>> think > >> >>>> > maybe we can use the following method to synchronize contacts. > >> >>>> > > >> >>>> > * server to client (update local contacts from server when > needed): > >> >>>> > In the function, SynAdapter.onPerformSync(), the process is > >> >>>> > "XWikiConnector.getAllUsers>> compare with the local contacts > and > >> find > >> >>>> the > >> >>>> > contacts which should be updated >> > ContactManager.updateContacts". > >> >>>> > Available apis: > >> >>>> > GetAllUserList: curl > >> >>>> > > >> http://localhost:8080/xwiki/rest/wikis/query?q=object:XWiki.XWikiUsers > >> >>>> > GetUserInfo: curl > >> >>>> > > >> >>>> > >> > http://localhost:8080/xwiki/rest/wikis/xwiki/spaces/XWiki/pages/FitzLee/objects/XWiki.XWikiUsers/0 > >> >>>> > > >> >>>> > * client to server (edit, add, delete contacts and meanwhile > >> synchronize > >> >>>> > from client to server): > >> >>>> > When editing, adding or deleting contacts in android activities, > we > >> >>>> should > >> >>>> > first request the xwiki server. Update contacts if allowed, or > >> discard > >> >>>> the > >> >>>> > modification if not be authorized or have no permission. > >> >>>> > Available apis: > >> >>>> > EditUser: curl -u FitzLee:fitz2xwiki -X PUT -H "Content-type: > >> >>>> > application/x-www-form-urlencoded" -H "Accept: application/xml" > -d > >> >>>> > "className=XWiki.XWikiUsers" -d "property#company=iie" > >> >>>> > > >> >>>> > >> > http://localhost:8080/xwiki/rest/wikis/xwiki/spaces/XWiki/pages/FitzLee/objects/XWiki.XWikiUsers/0 > >> >>>> > > >> >>>> > >> >>>> Yes the goal for now is to have an application working on any > >> existing > >> >>>> wiki (lets say not older than 7.4.x since that's the current LTS > but > >> >>>> the lowest the better). > >> >>>> > >> >>>> You can if you have time implement new REST APIs (it's always > usefull > >> >>>> anyway) that would improve performances for example but the > >> >>>> application should not assume that these new API would exist in > the > >> >>>> target instance that could be too old for it. So in the GSOC > >> timeframe > >> >>>> it would be safer to just do with what already exist which indeed > >> >>>> might give more work to the application than a specific API > designed > >> >>>> specifically for synchronization but it should be doable. > >> >>>> > >> >>>> > I see two main possibility for this: > >> >>>> >> * the first thing you should do I think is download the > >> jetty/hsqld > >> >>>> >> all in one distribution on > >> >>>> >> http://www.xwiki.org/xwiki/bin/view/Main/Download and use that > as > >> test > >> >>>> >> server (you have admin right in it and can create as many test > >> users > >> >>>> >> or groups as you want) > >> >>>> >> * as soon as you want to test volume and compatibility with > >> existing > >> >>>> >> instance of XWiki you can register on http://www.xwiki.org which > > >> >>>> >> contains 1519 users right now > >> >>>> >> > >> >>>> > > >> >>>> > I have downloaded the enterprise xwiki jetty server 8.0 and > tried > >> to > >> >>>> create > >> >>>> > some applications and understand the features of the server. > Using > >> the > >> >>>> > administrator Admin:admin, I have create some users and groups. > And > >> I > >> >>>> use > >> >>>> > the python script curl to learn how to get user-list, group-list > >> and how > >> >>>> to > >> >>>> > modify them with the restfull apis. In addition, I find a demo > >> which is > >> >>>> > useful for me to be familiar with the apis, like > >> >>>> > xwiki-contrib/android-client( > >> >>>> https://github.com/xwiki-contrib/android-client). > >> >>>> > And I will write my own android restful interactive method, > mainly > >> used > >> >>>> for > >> >>>> > the authentication and the management of users and groups. > >> >>>> > > >> >>>> > But for testing the volume and compatibility of the > synchronization > >> in > >> >>>> > SynAdapter.onPerformSync(), how do we compare the contact > >> differences > >> >>>> > between server and client and find the update contacts which > need > >> to be > >> >>>> > updated? It's a big problem if there are 1519 users and maybe I > >> should > >> >>>> > compare one by one to find which contact should be updated > because > >> >>>> > there'are no relevant apis to get the need-to-update contacts > from > >> >>>> server > >> >>>> > after the last time of synchronization. > >> >>>> > >> >>>> You don't have a sync API but you have a search API in which you > can > >> >>>> request all the documents containing a user object and that were > >> >>>> modified after some date for example. You can use either sql or > solr. > >> >>>> > >> >>>> > > >> >>>> >> (1) sign in > >> >>>> >> > it is easy,just like my analysis of android > SampleSyncAdapter, > >> >>>> including > >> >>>> >> the > >> >>>> >> > server connection with XWikiconnector and the account added > by > >> >>>> >> > AccountManager > >> >>>> >> > >> >>>> >> Don't reduce too quickly the level of difficulty on this side, > one > >> >>>> >> thing you will have to work around is that standard XWiki > instance > >> >>>> >> have no token based authentication so you will have to hack an > as > >> safe > >> >>>> >> as possible BASIC auth based implementation of Android > >> authenticator > >> >>>> >> (which mean users of the authenticator can't just ask for the > >> token > >> >>>> >> and connect to XWiki server). > >> >>>> > > >> >>>> > > >> >>>> > Thank you for your reminder. From the restfull apis, I have > seen > >> the > >> >>>> two > >> >>>> > methods of authentication, including HTTP BASIC Auth and XWiki > >> session > >> >>>> > auth. But Question is how users of the authenticator to connect > to > >> >>>> XWiki > >> >>>> > server without username and password as I can't modify the > >> >>>> authentication > >> >>>> > method in the server and can only use the BASIC Auth? use > BASE64 > >> to > >> >>>> > encrypt the password? or ask for the session and communicate > with > >> >>>> server? > >> >>>> > and BASE64 can just enhance the security in some extent. and > maybe > >> we > >> >>>> can > >> >>>> > use the https to ensure the authenticator security. I am so > >> confused. > >> >>>> Could > >> >>>> > you give me some tips about authentication and security? > >> >>>> > >> >>>> I did not had time to experiment on this but here as some ideas of > >> >>>> things to try: > >> >>>> > >> >>>> 1) return whatever identify the session (I had forgotten about > >> session > >> >>>> access, thanks for the reminder :)). Then the application put that > >> >>>> session id in whatever http client tool it want to use. That's > >> >>>> probably the safest and what look the most like a the classical > token > >> >>>> based access. > >> >>>> > >> >>>> 2) provide a preconfigured instance of Android HTTP Client in > which: > >> >>>> 2.a) a sessions have already been started with the server and the > >> HTTP > >> >>>> Client keep it alive (that's the safest I can think of right now) > >> >>>> 2.b) the BASIC auth header cannot be read from outside (for > example > >> >>>> extends it in a custom class and forbid any public access to the > >> >>>> Authorization header) that can be used to request the XWiki server > >> >>>> > >> >>>> 3) the worst case scenario is to return the BASIC auth header (it > >> >>>> looks like "Authorization: Basic QWxhZGRpbjpPcGVuU2VzYW1l"). It's > >> >>>> encoded but it's easy to decode. The application would just set it > in > >> >>>> whatever http tool it's using. An application can use an > >> authenticator > >> >>>> only if the user allows it and the alternative is that each > >> >>>> application deal with login/password on its side so it's still > better > >> >>>> than nothing :) > >> >>>> > >> >>>> Whatever solution is chosen the best would be to provide some > small > >> >>>> helper library that deal with XWiki authenticator and for example > >> >>>> generate a pre-configured http client instance for the application > >> >>>> with what the authenticator return. That way it's easier to change > >> the > >> >>>> way the authenticator works without breaking application (at least > >> >>>> application that use the recommended library). > >> >>>> > >> >>>> > > >> >>>> > > >> >>>> >> > (3) synchronization of contacts > >> >>>> >> > (4) edit the contact > >> >>>> >> > (5) access by other apps > >> >>>> >> > Question: Are there more other requirements in this app, like > >> adding > >> >>>> >> > friends(general person) and creating new xwiki > >> >>>> account(administrator)? > >> >>>> >> > maybe it will cause more demands and be more complex. > >> >>>> >> > > >> >>>> >> > >> >>>> >> There is no real "friends" system in standard XWiki and anyway > the > >> >>>> >> main use case for this application being intranets you usually > >> want to > >> >>>> >> simply synchronize all users of the wiki since those are your > >> >>>> >> coworkers. An improvement would be to allow the user to select > a > >> list > >> >>>> >> of XWiki groups to synchronize if you don't want the whole wiki > in > >> a > >> >>>> >> big company or public wiki like xwiki.org for example. > >> >>>> > > >> >>>> > > >> >>>> > So there are two choices: > >> >>>> > 1. Synchronize all contacts who are my coworkers > >> >>>> > 2. Synchronize the contacts in the XWiki group which > >> authenticator-user > >> >>>> > wants to select. > >> >>>> > >> >>>> And possibly other idea you may have while knowing XWiki better :) > >> >>>> > >> >>>> But on my side 1 and 2 would already be great. > >> >>>> > >> >>>> > > >> >>>> >> 4. support version and ui > >> >>>> >> > (1) ui design > >> >>>> >> > * material design >=4.4 with the support library support-v7 > >> >>>> >> > (2) support version > >> >>>> >> > * The ui design can support the lowest 2.3 version and the > >> android > >> >>>> >> > sampleSynAdapter can also support 2.3 version. So I think our > >> >>>> >> authenticator > >> >>>> >> > app can support the lowest 2.3 version if needed. > >> >>>> >> > Question: Maybe there are somethings I have not noticed, so > this > >> >>>> >> conclusion > >> >>>> >> > is wrong, please give me some advice? Is that OK? > >> >>>> >> > >> >>>> >> Supporting the lowest possible version is always nicer for > users > >> but > >> >>>> >> according to > >> http://developer.android.com/about/dashboards/index.html > >> >>>> >> no need to go beyond 4.1. > >> >>>> >> > >> >>>> >> 4.4 seems to still be a bit too recent and might left behind > too > >> many > >> >>>> >> users. > >> >>>> >> > >> >>>> >> > >> >>>> > Yes, so 4.1 may be the best choice. For the design of UI, the > >> support > >> >>>> > library support-v7 can solve the problem. And I will use the > >> perfect > >> >>>> > material design style if the android sdk version >= 4.4. > >> >>>> > > >> >>>> >> > >> >>>> >> > 5. account permission > >> >>>> >> > In AccountGeneral.java there are two permissions , like > >> >>>> >> > AUTHTOKEN_TYPE_READ_ONLY, AUTHTOKEN_TYPE_FULL_ACCESS. Could > you > >> tell > >> >>>> me > >> >>>> >> > what the permissions main? other xwiki instance access > limits > >> ? > >> >>>> >> Account > >> >>>> >> > manager? And where should I use them? > >> >>>> >> > >> >>>> >> You have many right on XWiki (and any extension can add more) > plus > >> it > >> >>>> >> depend what part of the wiki you are accessing. > >> >>>> >> > >> >>>> >> But since you don't have any concept of token associated to an > >> >>>> >> application in standard XWiki the application will have > whatever > >> right > >> >>>> >> the user have so I guess you can return > AUTHTOKEN_TYPE_FULL_ACCESS > >> all > >> >>>> >> the time in the Android authenticator (then the application > will > >> have > >> >>>> >> to deal with 403 errors). > >> >>>> > > >> >>>> > > >> >>>> > OK, I will return AUTHTOKEN_TYPE_FULL_ACCESS and deal with the > >> >>>> unauthorized > >> >>>> > or other response error. > >> >>>> > > >> >>>> > > >> >>>> >> > >> >>>> >> -- > >> >>>> >> Thomas Mortagne > >> >>>> >> _______________________________________________ > >> >>>> >> devs mailing list > >> >>>> >> [hidden email] < > >> http:///user/SendEmail.jtp?type=node&node=7598982&i=2> > >> >>>> >> http://lists.xwiki.org/mailman/listinfo/devs > >> >>>> >> > >> >>>> > > >> >>>> > At last, should I use the xwiki JIRA to create a custom issue > and > >> give > >> >>>> you > >> >>>> > a pull requst when I have some new idea or make progress? > >> >>>> > >> >>>> Anyone who is a member of the XWiki Contrib organization > (basically > >> >>>> anyone who ask to be) have write access on > >> >>>> https://github.com/xwiki-contrib/android-authenticator so no need > >> for > >> >>>> pull request. It's not like it was in a very stable state right > now > >> >>>> anyway :) > >> >>>> > >> >>>> > > >> >>>> > Best Regards, > >> >>>> > Fitz Lee | UCAS Master > >> >>>> > _______________________________________________ > >> >>>> > devs mailing list > >> >>>> > [hidden email] < > >> http:///user/SendEmail.jtp?type=node&node=7598982&i=3> > >> >>>> > http://lists.xwiki.org/mailman/listinfo/devs > >> >>>> > >> >>>> > >> >>>> > >> >>>> -- > >> >>>> Thomas Mortagne > >> >>>> _______________________________________________ > >> >>>> devs mailing list > >> >>>> [hidden email] < > http:///user/SendEmail.jtp?type=node&node=7598982&i=4> > >> > >> >>>> http://lists.xwiki.org/mailman/listinfo/devs > >> >>>> > >> >>>> > >> >>>> ------------------------------ > >> >>>> If you reply to this email, your message will be added to the > >> discussion > >> >>>> below: > >> >>>> > >> >>>> > >> > http://xwiki.475771.n2.nabble.com/Questions-Gsoc2016-XWiki-Android-authenticator-tp7598932p7598982.html > >> >>>> To unsubscribe from Questions, Gsoc2016, XWiki > Android-authenticator, > >> click > >> >>>> here > >> >>>> < > >> > >> >>>> . > >> >>>> NAML > >> >>>> < > >> > http://xwiki.475771.n2.nabble.com/template/NamlServlet.jtp?macro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml> > > >> > >> >>>> > >> >>> > >> >>> > >> >>> > >> >>> > >> >>> -- > >> >>> View this message in context: > >> > http://xwiki.475771.n2.nabble.com/Questions-Gsoc2016-XWiki-Android-authenticator-tp7598932p7599003.html > >> >>> Sent from the XWiki- Dev mailing list archive at Nabble.com. > >> >>> _______________________________________________ > >> >>> devs mailing list > >> >>> [hidden email] < > http:///user/SendEmail.jtp?type=node&node=7599102&i=4> > >> >>> http://lists.xwiki.org/mailman/listinfo/devs > >> >> > >> >> > >> >> > >> >> -- > >> >> Thomas Mortagne > >> > > >> > > >> > > >> > -- > >> > Thomas Mortagne > >> > >> > >> > >> -- > >> Thomas Mortagne > >> _______________________________________________ > >> devs mailing list > >> [hidden email] <http:///user/SendEmail.jtp?type=node&node=7599102&i=5> > >> http://lists.xwiki.org/mailman/listinfo/devs > >> > >> > >> ------------------------------ > >> If you reply to this email, your message will be added to the > discussion > >> below: > >> > >> > http://xwiki.475771.n2.nabble.com/Questions-Gsoc2016-XWiki-Android-authenticator-tp7598932p7599102.html > >> To unsubscribe from Questions, Gsoc2016, XWiki Android-authenticator, > click > >> here > >> < > >> . > >> NAML > >> < > http://xwiki.475771.n2.nabble.com/template/NamlServlet.jtp?macro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml> > > >> > > > > > > > > > > -- > > View this message in context: > http://xwiki.475771.n2.nabble.com/Questions-Gsoc2016-XWiki-Android-authenticator-tp7598932p7599117.html > > Sent from the XWiki- Dev mailing list archive at Nabble.com. > > _______________________________________________ > > devs mailing list > > [hidden email] <http:///user/SendEmail.jtp?type=node&node=7599118&i=2> > > http://lists.xwiki.org/mailman/listinfo/devs > > > > -- > Thomas Mortagne > _______________________________________________ > devs mailing list > [hidden email] <http:///user/SendEmail.jtp?type=node&node=7599118&i=3> > http://lists.xwiki.org/mailman/listinfo/devs > > > ------------------------------ > If you reply to this email, your message will be added to the discussion > below: > > http://xwiki.475771.n2.nabble.com/Questions-Gsoc2016-XWiki-Android-authenticator-tp7598932p7599118.html > To unsubscribe from Questions, Gsoc2016, XWiki Android-authenticator, click > here > <http://xwiki.475771.n2.nabble.com/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=7598932&code=bGVlZml0c0BnbWFpbC5jb218NzU5ODkzMnwtMjQ4MTUwNw==> > . > NAML > <http://xwiki.475771.n2.nabble.com/template/NamlServlet.jtp?macro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml> > -- View this message in context: http://xwiki.475771.n2.nabble.com/Questions-Gsoc2016-XWiki-Android-authenticator-tp7598932p7599132.html Sent from the XWiki- Dev mailing list archive at Nabble.com. _______________________________________________ devs mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/devs

