Theo the TwitterCore documentation:Android Vải TwitterCore đăng nhập mà không TwitterLoginButton
Cách đơn giản nhất để xác thực người dùng đang sử dụng TwitterLoginButton.
Làm cách nào để bạn xác thực người dùng mà không cần TwitterLoginButton?
Theo the TwitterCore documentation:Android Vải TwitterCore đăng nhập mà không TwitterLoginButton
Cách đơn giản nhất để xác thực người dùng đang sử dụng TwitterLoginButton.
Làm cách nào để bạn xác thực người dùng mà không cần TwitterLoginButton?
Bạn có thể muốn gọi cơ chế Twitter OAuth thông thường thông qua một cái gì đó như Twitter4J. Nếu bạn sử dụng TwitterLoginButton, đây là tất cả được gói gọn cho bạn thông qua các chức năng trong Twitter Kit.
Nếu mục tiêu của bạn là để không thêm một TwitterLoginButton trong cách bố trí của bạn (s), tạo ra một TwitterLoginButton lập trình và tự thực hiện một sự kiện click:
TwitterLoginButton button = new TwitterLoginButton(this);
button.setCallback(new Callback<TwitterSession>() {
@Override
public void success(Result<TwitterSession> result) {
// Do something with result, which provides a TwitterSession for making API calls
}
@Override
public void failure(TwitterException exception) {
// Do something on failure
}
});
button.performClick();
Điểm mấu chốt ở đây là rằng khi bạn tạo nút này, bạn có thể gọi button.performClick()
một cách thuận tiện.
Hãy xem TwitterAuthClient
.
Một cách sử dụng ví dụ sẽ là một cái gì đó tương tự (nơi getCallingActivity() có thể được thay thế bằng gọi của bạn Activity
),
TwitterAuthClient twitterAuthClient = new TwitterAuthClient();
twitterAuthClient.authorize(getCallingActivity(), new Callback<TwitterSession>() {
@Override
public void success(final Result<TwitterSession> result) {
final TwitterSession sessionData = result.data;
// Do something with the returned TwitterSession (contains the user token and secret)
}
@Override
public void failure(final TwitterException e) {
// Do something on fail
}
});
Sau đó ủy onActivityResult để TwitterAuthClient
,
twitterAuthClient.onActivityResult(requestCode, resultCode, data);
Bạn không cần tạo nút này. Xin vui lòng xem câu trả lời của tôi. – AndrewSmiley
@AndrewSmiley Có, câu trả lời của tôi không cần nút (TwitterLoginButton). Trong trường hợp này, người ta chỉ cần đặt đoạn mã này vào trong sự kiện mà anh ta muốn. : D – deubaka
Cuộc gọi tốt! Ngoài ra, không nhận ra câu trả lời của chúng tôi giống như thế nào cho đến khi tôi đăng bài của tôi! :/ – AndrewSmiley
Bạn không cần phải tạo một nút cho việc này. Về cơ bản, nếu bạn đào sâu vào một số lớp, bạn sẽ thấy rằng mã tương đối đơn giản. Vì vậy, đây là cách tôi đã làm nó. Bạn chỉ cần gọi TwitterAuthClient().authorize(Activity, Callback<TwitterSession)
Mã đầy đủ:
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.Toast;
import com.twitter.sdk.android.core.Callback;
import com.twitter.sdk.android.core.Result;
import com.twitter.sdk.android.core.TwitterException;
import com.twitter.sdk.android.core.TwitterSession;
import com.twitter.sdk.android.core.identity.TwitterAuthClient;
/**
* Created by Andrew on 6/23/15.
*/
public class ConnectTwitterActivity extends Activity {
//The auth client itself
/*you can abstract this and call TwitterCore.getInstance().login()
but basically that call is doing this one..
*/
TwitterAuthClient client;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//instanciate our client
client = new TwitterAuthClient();
//make the call to login
client.authorize(this, new Callback<TwitterSession>() {
@Override
public void success(Result<TwitterSession> result) {
//feedback
Toast.makeText(getApplicationContext(), "Login worked", Toast.LENGTH_LONG).show();
}
@Override
public void failure(TwitterException e) {
//feedback
Toast.makeText(getApplicationContext(), "Login failed", Toast.LENGTH_LONG).show();
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
//this method call is necessary to get our callback to get called.
client.onActivityResult(requestCode, resultCode, data);
}
}
Tại sao điều này được giảm giá? Mã này hoạt động trong một ứng dụng trực tiếp có sẵn trên thị trường Android .... – AndrewSmiley
Cảm ơn, đó là giải pháp rõ ràng. Tài liệu ngụ ý rằng có một cách khác không sử dụng LoginButton, nhưng có thể không. –
Có TwitterCore.getInstance() logIn (getActivity(), twitterCallback), nhưng có một lỗi mà nếu bạn hủy bỏ nó thì máy khách Twitter không nhận được onActivityResult, vì vậy tôi phải lập trình tạo một nút và gọi performClick anyway – Captnwalker1
Bạn không cần phải tạo nút cho mục này. Xin vui lòng xem câu trả lời của tôi. – AndrewSmiley