Интегрировать Yahoo, Google и OpenID через приложение для Android и iPhone? - PullRequest
2 голосов
/ 14 июня 2011

Я разрабатываю приложение для iPhone и Android, в которое я должен интегрировать Facebook, Twitter, Yahoo, Gmail, OpenId. Я интегрировал Facebook и Twitter, но как перейти на Yahoo, Gmail и OpenId? Как войти в систему через приложение и получить информацию о пользователе?

Пожалуйста, покажи мне способ реализовать это. Любой учебник может помочь.

Спасибо.

Ответы [ 2 ]

1 голос
/ 12 октября 2012
    String YAHOO_RESOURCE_URL = "http://social.yahooapis.com/v1/me/guid/profile?fomat=xml";
    String CALLBACK_URL = "oauth://testApp";
    String YAHOO_REQUEST_TOKEN_URL = "https://api.login.yahoo.com/oauth/v2/get_request_token";
    String YAHOO_ACCESS_TOKEN_URL = "https://api.login.yahoo.com/oauth/v2/get_token";
    String YAHOO_AUTHORIZE_URL = "https://api.login.yahoo.com/oauth/v2/request_auth";

    // Oauth consumer and provider.
    CommonsHttpOAuthConsumer consumer = new CommonsHttpOAuthConsumer(Constants.YAHOO_CONSUMER_KEY, Constants.YAHOO_CONSUMER_SERECT_KEY);
    OAuthProvider provider = new CommonsHttpOAuthProvider(YAHOO_REQUEST_TOKEN_URL , YAHOO_ACCESS_TOKEN_URL, YAHOO_AUTHORIZE_URL);
    provider.setOAuth10a(true);

    // First retrive request token.
    String authUrl = provider.retrieveRequestToken(consumer, CALLBACK_URL);
    String yahooToken = consumer.getToken();
    String yahooTokenSecret = consumer.getTokenSecret();

    Open the authUrl in android web browser, this will launch login page, then after login will ask for permissions, accepting the permissions will return in your app using callback url.

    Now,
    In onResume

    Uri uri = this.getIntent().getData();
    if (uri != null && uri.toString().startsWith(CALLBACK_URL)) {

    String oauthToken = uri.getQueryParameter(oauth.signpost.OAuth.OAUTH_TOKEN);
    String oauthVerifier = uri.getQueryParameter(oauth.signpost.OAuth.OAUTH_VERIFIER);

    consumer = new CommonsHttpOAuthConsumer(Constants.YAHOO_CONSUMER_KEY, Constants.YAHOO_CONSUMER_SERECT_KEY);
    consumer.setTokenWithSecret(yahooToken, yahooTokenSecret);

    provider = new CommonsHttpOAuthProvider(YAHOO_REQUEST_TOKEN_URL, YAHOO_ACCESS_TOKEN_URL, YAHOO_AUTHORIZE_URL);
    provider.setOAuth10a(true);

    // Now retrive access token
    provider.retrieveAccessToken(consumer, oauthVerifier);
    String token = consumer.getToken();
    String tokenSecret = consumer.getTokenSecret();
    consumer.setTokenWithSecret(token, tokenSecret);

    //  Get the GUID from this.
    DefaultHttpClient httpClient = new DefaultHttpClient();
    HttpGet request = new HttpGet("http://social.yahooapis.com/v1/me/guid?format=json");
    consumer.sign(request);
    HttpResponse response = httpClient.execute(request);

Разобрать ответ, чтобы получить GUID.

    // Now use the GUID to get profile info.
    DefaultHttpClient httpClient = new DefaultHttpClient();
    String strUrl = "http://social.yahooapis.com/v1/user/"+ strGUID +"/profile?format=json";
    HttpGet request = new HttpGet(strUrl);
    consumer.sign(request);
    HttpResponse response = httpClient.execute(request);

Разбор ответа и njoy:)

...