登录:
1、导入jar包
2、加权限
<!-- QQ登录授权所需权限 -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
3、注册Activity(不用创建,复制即可)
<!-- 注册SDKActivity -->
<activity
android:name="com.tencent.tauth.AuthActivity"
android:launchMode="singleTask"
android:noHistory="true" >
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="tencent1105602574" /> <!-- 开放平台获取的APPID -->
</intent-filter>
</activity>
<activity android:name="com.tencent.connect.common.AssistActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:screenOrientation="portrait"/>
4、在MainAcitivity 中定义
private static final String TAG = "MainActivity";
private static final String APP_ID = "1105602574";//官方获取的APPID
private Tencent mTencent;
private BaseUiListener mIUiListener;
private UserInfo mUserInfo;
5、在MainActivity的onCreate的方法中传入参数(复制)
//传入参数APPID和全局Context上下文
mTencent = Tencent.createInstance(APP_ID,MainActivity.this.getApplicationContext());
6、在点击事件中复制
mIUiListener = new BaseUiListener();
//all表示获取所有权限
mTencent.login(MainActivity.this,"all", mIUiListener);
7、复制内部类
private class BaseUiListener implements IUiListener{
@Override
public void onComplete(Object response) {
Toast.makeText(MainActivity.this, "授权成功", Toast.LENGTH_SHORT).show();
Log.e(TAG, "response:" + response);
JSONObject obj = (JSONObject) response;
try {
String openID = obj.getString("openid");
String accessToken = obj.getString("access_token");
String expires = obj.getString("expires_in");
mTencent.setOpenId(openID);
mTencent.setAccessToken(accessToken,expires);
QQToken qqToken = mTencent.getQQToken();
mUserInfo = new UserInfo(getApplicationContext(),qqToken);
mUserInfo.getUserInfo(new IUiListener() {
@Override
public void onComplete(Object response) {
Log.e(TAG,"登录成功"+response.toString());
}
@Override
public void onError(UiError uiError) {
Log.e(TAG,"登录失败"+uiError.toString());
}
@Override
public void onCancel() {
Log.e(TAG,"登录取消");
}
});
} catch (JSONException e) {
e.printStackTrace();
}
}
@Override
public void onError(UiError uiError) {
Toast.makeText(MainActivity.this, "授权失败", Toast.LENGTH_SHORT).show();
}
@Override
public void onCancel() {
Toast.makeText(MainActivity.this, "授权取消", Toast.LENGTH_SHORT).show();
}
}
/**
* 在调用Login的Activity或者Fragment中重写onActivityResult方法
* @param requestCode
* @param resultCode
* @param data
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode == Constants.REQUEST_LOGIN){
Tencent.onActivityResultData(requestCode,resultCode,data,mIUiListener);
}
super.onActivityResult(requestCode, resultCode, data);
}
}
效果图:
参考地址:https://blog.csdn.net/cn_jack_chen/article/details/73437979
另外有Mod方法的第三方登录 时间关系未加详细步骤 可参考官方文档:http://wiki.mob.com/%E7%AC%AC%E4%B8%89%E6%96%B9%E7%99%BB%E5%BD%95/
分享(用到的Mod中的第三方分享):
1、打开项目根目录(Studio工作空间)的build.gradle,在buildscrip–>dependencies 模块下面添加 classpath ‘com.mob.sdk:MobSDK:+’
2、在使用到Mob产品(项目)的module下面的build.gradle文件里面添加引用
在顶部复制
apply plugin: 'com.mob.sdk'
如图:
3、可以在Mob产品的module下面的build.gradle文件里面配置ShareSDK各个社交平台的key信息
如图:
4、跟ImageLoader一样 创建一个class类,继承Application 在onCreate方法中 复制这行
MobSDK.init(this);
如图:
在清单文件中:
5、最后就在点击事件中复制
效果图:
可参考官方文档:http://wiki.mob.com/sdk-share-android-3-0-0/