2015-04-26 9 views
16

Ich bin neu in Android-Entwicklung. Mein Projekt besteht darin, eine Anwendung mit der öffentlichen API von Steam zu erstellen, aber ich konnte nicht herausfinden, wie ich dem Benutzer erlauben kann, sich mit dem Steam-Account anzumelden.Steam Anmeldung mit openID in Android

Steam's Web-API-Dokumentation besagt, dass ich OpenID verwenden sollte, also habe ich viel gesucht, um ein Beispiel zu finden, OpenID in einer andorid-App zu implementieren, aber this ist das einzige Beispiel, das ich fand und es funktioniert nicht, das WebView stellt sich heraus leer.

Ich möchte nur, dass der Benutzer auf eine Login-Schaltfläche klickt, die ein WebView auslöst, wo er sich anmelden kann und dann seine Steam-ID zurückbekommt.

so meine Frage ist

  1. Gibt es eine Möglichkeit OpenID Login in Android zu implementieren?
  2. Wenn nicht, ist es dem Benutzer trotzdem möglich, sich anzumelden?
+0

sorry, ich habe nicht – LimBo

+0

plz ausführlicher auf Ihre Arbeit liefern >>> –

Antwort

10

Ich glaube, ich habe eine Art Workaround entdeckt, denke ich.

Der Dampf openid kann mit einer URL-Anforderung wie folgt verwendet werden:

https://steamcommunity.com/openid/login? 
openid.claimed_id=http://specs.openid.net/auth/2.0/identifier_select& 
openid.identity=http://specs.openid.net/auth/2.0/identifier_select& 
openid.mode=checkid_setup& 
openid.ns=http://specs.openid.net/auth/2.0& 
openid.realm=https://REALM_PARAM& 
openid.return_to=https://REALM_PARAM/signin/ 

wo REALM_PARAM die Website, die auf dem Anmeldebildschirm, auch wird der Benutzer umgeleitet werden zu dieser Webseite erscheinen werden, nachdem die Authentifizierung abgeschlossen es muss nicht wirklich existieren. Alles, was Sie danach tun mussten, ist die neue URL für die Benutzer-ID zu analysieren.

So habe ich so etwas wie dieses

public class LoginActivity extends ActionBarActivity { 

    // The string will appear to the user in the login screen 
    // you can put your app's name 
    final String REALM_PARAM = "YourAppName"; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     final WebView webView = new WebView(this); 
     webView.getSettings().setJavaScriptEnabled(true); 

     final Activity activity = this; 

     webView.setWebViewClient(new WebViewClient() { 
      @Override 
      public void onPageStarted(WebView view, String url, 
             Bitmap favicon) { 

       //checks the url being loaded 
       setTitle(url); 
       Uri Url = Uri.parse(url); 

       if(Url.getAuthority().equals(REALM_PARAM.toLowerCase())){ 
        // That means that authentication is finished and the url contains user's id. 
        webView.stopLoading(); 

        // Extracts user id. 
        Uri userAccountUrl = Uri.parse(Url.getQueryParameter("openid.identity")); 
        String userId = userAccountUrl.getLastPathSegment(); 

        // Do whatever you want with the user's steam id 

       }); 
       setContentView(webView); 

       // Constructing openid url request 
       String url = "https://steamcommunity.com/openid/login?" + 
         "openid.claimed_id=http://specs.openid.net/auth/2.0/identifier_select&" + 
         "openid.identity=http://specs.openid.net/auth/2.0/identifier_select&" + 
         "openid.mode=checkid_setup&" + 
         "openid.ns=http://specs.openid.net/auth/2.0&" + 
         "openid.realm=https://" + REALM_PARAM + "&" + 
         "openid.return_to=https://" + REALM_PARAM + "/signin/"; 

       webView.loadUrl(url); 

      } 
     }