2015-04-26 19 views
16

Iam nuovo per lo sviluppo Android. il mio progetto è quello di creare un'applicazione utilizzando l'API pubblica di Steam, ma non sono riuscito a capire come consentire all'utente di accedere utilizzando l'account Steam.accesso al vapore tramite openID in Android

La documentazione dell'API Web di Steam indica che dovrei usare openID, quindi ho cercato un sacco per trovare un esempio di implementazione di openID in un'app andorid, ma l'this è l'unico che ho trovato e non funziona, la webView si scopre vuoto.

Voglio solo che l'utente faccia clic su un pulsante di accesso che spara una webView in cui l'utente può accedere e quindi ottenere il suo ID di vapore.

quindi la mia domanda è

  1. C'è un modo per implementare login OpenID in Android?
  2. In caso contrario, è comunque necessario consentire all'utente di accedere al vapore?
+0

dispiace, non ho – LimBo

+0

plz in modo più dettagliato il lavoro >>> –

risposta

10

Penso di aver scoperto una sorta di soluzione immaginaria.

L'OpenID vapore può essere utilizzato con una richiesta URL come questo:

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/ 

dove REALM_PARAM è il sito che apparirà nella schermata di login, anche l'utente verrà reindirizzato a tale sito web dopo l'autenticazione è completa , non deve esistere realmente. Tutto quello che dovevi fare dopo è analizzare il nuovo url per l'id utente.

così ho usato qualcosa di simile

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); 

      } 
     }