1.開放平臺
2.步驟
2.1新浪
1况芒、注冊成為新浪微博開發(fā)者惜纸,創(chuàng)建應用,輸入基本信息绝骚。
2耐版、在新浪第三登錄接口下,需要輸入packagename和apk簽名压汪,調試程序時粪牲,apk簽名為debug簽名,而發(fā)布之后止剖,則會生成新的簽名指紋(ubuntu獲取簽名指紋命令:keytool -list -v -keystore 簽名路徑 -storepass 密碼),其中獲取md5簽名后腺阳,去除冒號并將大寫字母變?yōu)樾懠纯伞?br>
3、創(chuàng)建的應用RedirectUrl這個字段的值就是我們后臺項目中的應用信息——>高級信息——>OAuth2.0 授權設置中的授權回調頁這個字段穿香,需要我們填寫一個有效的地址亭引,一般為:https://api.weibo.com/oauth2/default.html
4.使用
4.1在項目的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));
第三方應用應該使用自己的 APP_KEY 替換該 APP_KEY
建議使用默認回調頁 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.同理注冊為開發(fā)者
2.百度第三方登陸相對簡單,無需填包名和簽名
3.下載baidusdk皮获,倒入到工程中即可
baidu = new Baidu(clientId, LoginActivity.this);//client是分配給應用的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.注冊成為開發(fā)者并創(chuàng)建應用
2.獲取id,下載qq sdk jar包即可
compile files('libs/open_sdk_r5886_lite.jar')
//qq
// Tencent類是SDK的主要實現(xiàn)類焙蚓,開發(fā)者可通過Tencent類訪問騰訊開放的OpenAPI。
// 其中APP_ID是分配給第三方應用的appid洒宝,類型為String购公。
mTencent = Tencent.createInstance("1106499896", this.getApplicationContext());
listener = new IUiListener(){
@Override
public void onComplete(Object o) {
//"回調結果"
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);
}