在android中使用Twitter自定义登录

在android中使用Twitter自定义登录,android,twitter,Android,Twitter,如何在android应用程序开发中为twitter的社交登录验证创建自定义按钮。默认情况下,社交媒体有不同的SDK,twitter的SDK已经有了自己的按钮社交登录,但我想使用自己的自定义按钮,我写了一些代码,但得到了例外 java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.Object.hashCode()' on a null object reference 我的代码:- 请试试这

如何在android应用程序开发中为twitter的社交登录验证创建自定义按钮。默认情况下,社交媒体有不同的SDK,twitter的SDK已经有了自己的按钮社交登录,但我想使用自己的自定义按钮,我写了一些代码,但得到了例外

java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.Object.hashCode()' on a null object reference
我的代码:- 请试试这个

在项目中添加此渐变线

 compile 'com.twitter.sdk.android:twitter:3.0.0'
写下你的活动/片段

         //Your Custom Button
          private ivTwitter;
         //Twitter Login Button
          private TwitterLoginButton ivTwitterMain;

          //init twitter
 TwitterConfig config = new TwitterConfig.Builder(this)
                .logger(new DefaultLogger(Log.DEBUG))
                .twitterAuthConfig(new TwitterAuthConfig(Const.CONSUMER_KEY, Const.CONSUMER_SECRET))
                .debug(false)
                .build();
        Twitter.initialize(config);

        //Write in onCreate method
      ivTwitter = (ImageView) view.findViewById(R.id.ivTwitter);
      ivTwitterMain = (TwitterLoginButton)view.findViewById(R.id.ivTwitterMain);       
      ivTwitterMain.setCallback(new Callback<TwitterSession>() {
                    @Override
                    public void success(Result<TwitterSession> result) {
                        // Do something with result, which provides a TwitterSession for making API calls
                        TwitterSession session = TwitterCore.getInstance().getSessionManager().getActiveSession();
                        TwitterAuthToken authToken = session.getAuthToken();
                        String token = authToken.token;
                        String secret = authToken.secret;

                        getTwitterUserProfile(session);

                    }

                    @Override
                    public void failure(TwitterException exception) {
                        // Do something on failure
                        Log.d(Const.FRAGMENT_REGISTER, exception.getMessage());
                    }

                });
 compile 'com.twitter.sdk.android:twitter:3.0.0'
         //Your Custom Button
          private ivTwitter;
         //Twitter Login Button
          private TwitterLoginButton ivTwitterMain;

          //init twitter
 TwitterConfig config = new TwitterConfig.Builder(this)
                .logger(new DefaultLogger(Log.DEBUG))
                .twitterAuthConfig(new TwitterAuthConfig(Const.CONSUMER_KEY, Const.CONSUMER_SECRET))
                .debug(false)
                .build();
        Twitter.initialize(config);

        //Write in onCreate method
      ivTwitter = (ImageView) view.findViewById(R.id.ivTwitter);
      ivTwitterMain = (TwitterLoginButton)view.findViewById(R.id.ivTwitterMain);       
      ivTwitterMain.setCallback(new Callback<TwitterSession>() {
                    @Override
                    public void success(Result<TwitterSession> result) {
                        // Do something with result, which provides a TwitterSession for making API calls
                        TwitterSession session = TwitterCore.getInstance().getSessionManager().getActiveSession();
                        TwitterAuthToken authToken = session.getAuthToken();
                        String token = authToken.token;
                        String secret = authToken.secret;

                        getTwitterUserProfile(session);

                    }

                    @Override
                    public void failure(TwitterException exception) {
                        // Do something on failure
                        Log.d(Const.FRAGMENT_REGISTER, exception.getMessage());
                    }

                });
private void getTwitterUserProfile(TwitterSession session) {
        AccountService accountService = new TwitterApiClient(session).getAccountService();
        Call<User> callback = accountService.verifyCredentials(true, true, true);
        callback.clone().enqueue(new Callback<User>() {
            @Override
            public void success(Result<User> result) {
              Log.d("NAME ", result.data.name);
               Log.d("EMAIL", result.data.email);
              Log.d("PICTURE ",  result.data.profileImageUrl);
            }

            @Override
            public void failure(TwitterException exception) {

            }
        });
    }
ivTwitter.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //twitter login button
                ivTwitterMain.performClick(); 
            }
        });