📅  最后修改于: 2023-12-03 15:07:36.931000             🧑  作者: Mango
在 Android 上使用 GitHub 进行身份验证
在 Android 应用程序中,通过 GitHub 进行身份验证是一个常见的需求。GitHub 账户可以用于身份验证和授权,以及对 API 的访问。
要使用 GitHub 进行身份验证,必须首先创建一个 GitHub 应用程序。请按照以下步骤操作:
在应用程序注册后,您将获得一个客户端 ID 和一个客户端密钥。
现在您已经有了一个 GitHub 应用程序,接下来该如何在 Android 应用程序中使用它呢?
以下是附加 GitHub 身份验证的步骤:
compile 'org.eclipse.egit:org.eclipse.egit.github.core:2.1.5'
compile 'com.github.GrenderG:preference-annotations:1.0.3'
compile 'com.github.GrenderG:material-preferences:1.1'
<uses-permission android:name="android.permission.INTERNET" />
import android.content.SharedPreferences;
import android.os.AsyncTask;
import android.preference.PreferenceManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import org.eclipse.egit.github.core.client.GitHubClient;
import org.eclipse.egit.github.core.client.GitHubResponse;
import org.eclipse.egit.github.core.service.UserService;
import java.io.IOException;
public class MainActivity extends AppCompatActivity {
private static final String LOG_TAG = MainActivity.class.getSimpleName();
private SharedPreferences mSharedPreferences;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
String accessToken = mSharedPreferences.getString(getString(R.string.pref_access_token_key), "");
if (accessToken.isEmpty()) {
new GetAccessTokenTask().execute();
} else {
Log.d(LOG_TAG, "Access token already exists: " + accessToken);
}
}
private class GetAccessTokenTask extends AsyncTask<Void, Void, String> {
private static final String CLIENT_ID = "YOUR_CLIENT_ID";
private static final String CLIENT_SECRET = "YOUR_CLIENT_SECRET";
@Override
protected String doInBackground(Void... params) {
GitHubClient client = new GitHubClient();
client.setCredentials(CLIENT_ID, CLIENT_SECRET);
UserService userService = new UserService(client);
try {
GitHubResponse response = userService.createAuthorization("YOUR_NOTE", null, "repo,user");
return response.getBody();
} catch (IOException e) {
Log.e(LOG_TAG, "Failed to get access token", e);
}
return null;
}
@Override
protected void onPostExecute(String accessToken) {
if (accessToken != null) {
Log.d(LOG_TAG, "Access token: " + accessToken);
mSharedPreferences.edit().putString(getString(R.string.pref_access_token_key), accessToken).apply();
}
}
}
}
import android.os.Bundle;
import android.support.v7.preference.PreferenceFragmentCompat;
public class SettingsFragment extends PreferenceFragmentCompat {
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
addPreferencesFromResource(R.xml.preferences);
bindPreferenceSummaryToValue(findPreference(getString(R.string.pref_access_token_key)));
}
}
<EditTextPreference
android:defaultValue=""
android:dialogTitle="@string/auth_dialog_title"
android:key="@string/pref_access_token_key"
android:summary="@string/auth_dialog_summary"
android:title="@string/auth_dialog_title" />
GitHubClient client = new GitHubClient();
client.setOAuth2Token(accessToken);
UserService userService = new UserService(client);
User user = userService.getUser();
现在您已经知道如何在 Android 应用程序中使用 GitHub 进行身份验证。通过将访问令牌保存在 SharedPreferences 中,您可以轻松地从应用程序中进行身份验证。