1.開(kāi)放平臺(tái)
新浪開(kāi)放平臺(tái)
百度開(kāi)放平臺(tái)
QQ開(kāi)放平臺(tái)
2.步驟
2.1新浪
1、注冊(cè)成為新浪微博開(kāi)發(fā)者,創(chuàng)建應(yīng)用,輸入基本信息。
2、在新浪第三登錄接口下,需要輸入packagename和apk簽名,調(diào)試程序時(shí),apk簽名為debug簽名,而發(fā)布之后,則會(huì)生成新的簽名指紋(ubuntu獲取簽名指紋命令:keytool -list -v -keystore 簽名路徑 -storepass 密碼),其中獲取md5簽名后,去除冒號(hào)并將大寫(xiě)字母變?yōu)樾?xiě)即可。
3、創(chuàng)建的應(yīng)用RedirectUrl這個(gè)字段的值就是我們后臺(tái)項(xiàng)目中的應(yīng)用信息——>高級(jí)信息——>OAuth2.0 授權(quán)設(shè)置中的授權(quán)回調(diào)頁(yè)這個(gè)字段,需要我們填寫(xiě)一個(gè)有效的地址,一般為:https://api.weibo.com/oauth2/default.html

4.使用
4.1在項(xiàng)目的gradle文件下加入maven { url "https://dl.bintray.com/thelasterstar/maven/" }

并且在app gradle下加入//微博sdk
compile 'com.sina.weibo.sdk:core:2.0.3:openDefaultRelease@aar'
compile files('libs/android-support-v4.jar')
在application入口初始化如下代碼
WbSdk.install(this,new AuthInfo(this, Constants.APP_KEY, Constants.REDIRECT_URL,Constants.SCOPE));
第三方應(yīng)用應(yīng)該使用自己的 APP_KEY 替換該 APP_KEY
建議使用默認(rèn)回調(diào)頁(yè) String REDIRECT_URL = "https://api.weibo.com/oauth2/default.html";
//sina
mSsoHandler = new SsoHandler(this);
mSsoHandler.authorize(new com.sina.weibo.sdk.auth.WbAuthListener(){
@Override
public void onSuccess(final Oauth2AccessToken token) {
LoginActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
mAccessToken = token;
if (mAccessToken.isSessionValid()) {
// 顯示 Token
// updateTokenView(false);
// 保存 Token 到 SharedPreferences
AccessTokenKeeper.writeAccessToken(LoginActivity.this, mAccessToken);
SPUtils.setSharedBooleanData(LoginActivity.this,"isLogin",true);
SPUtils.setSharedlongData(LoginActivity.this,"deadline", System.currentTimeMillis()+7*24*60*60*1000);
Toast.makeText(LoginActivity.this,
R.string.weibosdk_demo_toast_auth_success, Toast.LENGTH_SHORT).show();
Intent intent = new Intent(LoginActivity.this,MainActivity.class);
intent.putExtra("sina",true);
intent.putExtra("loginWay",1);
LoginActivity.this.startActivity(intent);
LoginActivity.this.finish();
}
}
});
}
@Override
public void cancel() {
Toast.makeText(LoginActivity.this,
R.string.weibosdk_demo_toast_auth_canceled, Toast.LENGTH_LONG).show();
}
@Override
public void onFailure(WbConnectErrorMessage errorMessage) {
Toast.makeText(LoginActivity.this, errorMessage.getErrorMessage(), Toast.LENGTH_LONG).show();
}
});
3.1百度
1.同理注冊(cè)為開(kāi)發(fā)者
2.百度第三方登陸相對(duì)簡(jiǎn)單,無(wú)需填包名和簽名
3.下載baidusdk,倒入到工程中即可
baidu = new Baidu(clientId, LoginActivity.this);//client是分配給應(yīng)用的id
baidu.authorize(LoginActivity.this, isForceLogin,isConfirmLogin,new BaiduDialog.BaiduDialogListener() {
@Override
public void onComplete(Bundle values) {
new Thread(){
@Override
public void run() {
String json = "你好";
try {
json = baidu.request("https://openapi.baidu.com/rest/2.0/passport/users/getInfo", null, "GET");
} catch (IOException e) {
e.printStackTrace();
} catch (BaiduException e) {
e.printStackTrace();
}
final String finalJson = json;
runOnUiThread(new Runnable() {
@Override
public void run() {
Util.logd("線程", Thread.currentThread()+"");
if (finalJson != null) {
SPUtils.setSharedBooleanData(LoginActivity.this,"isLogin",true);
SPUtils.setSharedlongData(LoginActivity.this,"deadline", System.currentTimeMillis()+7*24*60*60*1000);
Gson gson = new Gson();
BaiduLoginBean baiduLoginBean = gson.fromJson(finalJson, BaiduLoginBean.class);
Intent intent = new Intent(LoginActivity.this,MainActivity.class);
intent.putExtra("baidu", (Serializable) baiduLoginBean);
intent.putExtra("loginWay",2);
LoginActivity.this.startActivity(intent);
LoginActivity.this.finish();
}
}
});
}
}.start();
}
@Override
public void onBaiduException(BaiduException e) {
}
@Override
public void onError(BaiduDialogError e) {
}
@Override
public void onCancel() {
}
});
4.1QQ
1.注冊(cè)成為開(kāi)發(fā)者并創(chuàng)建應(yīng)用
2.獲取id,下載qq sdk jar包即可
compile files('libs/open_sdk_r5886_lite.jar')
//qq
// Tencent類(lèi)是SDK的主要實(shí)現(xiàn)類(lèi),開(kāi)發(fā)者可通過(guò)Tencent類(lèi)訪問(wèn)騰訊開(kāi)放的OpenAPI。
// 其中APP_ID是分配給第三方應(yīng)用的appid,類(lèi)型為String。
mTencent = Tencent.createInstance("1106499896", this.getApplicationContext());
listener = new IUiListener(){
@Override
public void onComplete(Object o) {
//"回調(diào)結(jié)果"
SPUtils.setSharedBooleanData(LoginActivity.this,"isLogin",true);
SPUtils.setSharedlongData(LoginActivity.this,"deadline", System.currentTimeMillis()+7*24*60*60*1000);
Gson gson = new Gson();
QQLoginBean qqLoginBean = gson.fromJson(o.toString(), QQLoginBean.class);
Intent intent = new Intent(LoginActivity.this,MainActivity.class);
intent.putExtra("qq", (Serializable) qqLoginBean);
intent.putExtra("loginWay",3);
LoginActivity.this.startActivity(intent);
LoginActivity.this.finish();
}
@Override
public void onError(UiError e) {
Util.logd("onError:", "code:" + e.errorCode + ", msg:"
+ e.errorMessage + ", detail:" + e.errorDetail);
}
@Override
public void onCancel() {
Util.logd("cancel","");
}
};
if (!mTencent.isSessionValid())
{
mTencent.login(this, "all", listener);
}