android中使用Twitter登陆获取用户信息

来源:互联网 发布:淘宝网打不开 编辑:程序博客网 时间:2024/06/06 17:04

第一步:准备工作

注册twitter开发者获取key(比较简单,不描述)等,网址:https://apps.twitter.com 要翻墙可以用蓝灯https://github.com/getlantern/lantern

第二步:在as中引入依赖包

  • 在工程的gradle文件中添加仓库
buildscript {    repositories {        //twitter  jar地址        maven { url 'https://maven.fabric.io/public' }        jcenter()        mavenCentral()    }    dependencies {        classpath 'com.android.tools.build:gradle:2.2.2'     }}
  • 在Module中添加依赖
repositories {    maven { url 'https://maven.fabric.io/public' }    maven { url "https://jitpack.io" }    jcenter()    mavenCentral()}......compile('com.twitter.sdk.android:twitter-core:1.3.1@aar') {            transitive = true;    }

第三步:在xml文件中使用官方控件

  <com.twitter.sdk.android.core.identity.TwitterLoginButton        android:id="@+id/btn_twitter"        android:layout_width="match_parent"        android:layout_height="45dp"        android:layout_marginTop="36dp"        android:layout_marginLeft="16dp"        android:layout_marginRight="16dp"        />

第四步:代码操作

public class OtherLoginActivity extends BaseActivity {    @BindView(R.id.btn_twitter)    TwitterLoginButton mBtnTwitter;    private static final String TWITTER_KEY = "h29HRrL35DI91ge2D4ZZlu5ts";    private static final String TWITTER_SECRET = "xzxUa6fDUF5wsd0fdkapqrzsfDiHygTallN8Q4gG4A1m6W2YuW";    private String userId = "";    private String name = "";    private String imgUrl = "";    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        TwitterAuthConfig authConfig = new TwitterAuthConfig(TWITTER_KEY, TWITTER_SECRET);        Fabric.with(this, new TwitterCore(authConfig));        setContentView(R.layout.activity_other_login);        setUpTwitterButton();    }    @Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        //千万不要忘记了        mBtnTwitter.onActivityResult(requestCode, resultCode, data);    }    //twitter登录回调    private void setUpTwitterButton() {        mBtnTwitter.setCallback(new Callback<TwitterSession>() {            @Override            public void success(com.twitter.sdk.android.core.Result<TwitterSession> result) {                TwitterAuthToken authToken = result.data.getAuthToken();                userId = result.data.getUserId() + "";                name = result.data.getUserName();                         getTwitterInfo(authToken, name, userId);            }            @Override            public void failure(TwitterException e) {                e.printStackTrace();            }        });    }    //获取用户信息    private void getTwitterInfo(final TwitterAuthToken token, final String name, final String userId) {        new Thread(new Runnable() {            @Override            public void run() {                TwitterAuthConfig authConfig = TwitterCore.getInstance().getAuthConfig();                URL url;                try {                    url = new URL("https://api.twitter.com/1.1/users/show.json?screen_name=" + name + "&user_id=" + userId);                    HttpURLConnection conn = (HttpsURLConnection) url.openConnection();                    conn.setRequestMethod("GET");                    Map<String, String> par = new HashMap<>();                    par.put("screen_name", name);                    par.put("user_id", userId);                    OAuth1aService.signRequest(authConfig, token, conn, par);                    conn.connect();                    InputStreamReader in = new InputStreamReader(conn.getInputStream());                    BufferedReader buffer = new BufferedReader(in);                    String inputLine;                    String resultData = "";                    while (((inputLine = buffer.readLine()) != null)) {                        resultData += inputLine + "\n";                    }                    JSONObject jo = new JSONObject(resultData);                    imgUrl = jo.getString("profile_image_url");                    goLogin();                } catch (MalformedURLException e) {                    e.printStackTrace();                } catch (ProtocolException e) {                    e.printStackTrace();                } catch (IOException e) {                    e.printStackTrace();                } catch (JSONException e) {                    e.printStackTrace();                }            }        }).start();    }    //TODO:got the token,Notify server,and do something    private void goLogin() {    }}
0 0
原创粉丝点击