使用友盟完成第三方QQ登录,并回传头像等数据
2017-07-14 15:20
465 查看
这是自己总结的,可以实现,我做的只是QQ登录
不多说,直接进入主题
先看运行效果
点击button,跳转到登录界面
授权并登录
登录并返回信息
我总结的东西步骤太多,但是步骤一个不少,步骤很清晰
1:配置需要的东西
1.1 找到友盟官网,并注册,登录
1.2 登录以后进入友盟主页,点击产品---->U-Share
1.3 点击U-Share进入页面后,点击SDK及文档下的Android机器人图标
1.4 进入以后下载所需要的SDK
1.5 下载SDK 根据自己的需求勾选
1.6 下载,解压并打开后,双击友盟集成工具,打开以后勾选自己需要的(我做的是QQ完整版,使用的是Android studio)
1.7 点击OK以后会生成一个文件夹
1.8 点开文件夹以后 ,把libs下的jar包导入到工程里的libs中
1.9 把jar包导入到 library中
2.0 把res文件夹下的文件拷入到工程相应的文件夹下
2.1 把生成的debug.keystore 导入到工程中,要和build同级
2.2配置Android Mainfest.xml权限
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
2.3 sdk中需要的activity
<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="tencent100424468" /> </intent-filter> </activity> <activity android:name="com.tencent.connect.common.AssistActivity" android:screenOrientation="portrait" android:theme="@android:style/Theme.Translucent.NoTitleBar" android:configChanges="orientation|keyboardHidden|screenSize"/> <meta-data android:name="UMENG_APPKEY" android:value="561cae6ae0f55abd990035bf" > </meta-data>
2.4 增加签名中的文件
buildTypes { release { minifyEnabled false signingConfig signingConfigs.debug proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } debug { minifyEnabled false signingConfig signingConfigs.debug proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } }
2.5 Application中
public class App extends Application { { //配置QQappkey PlatformConfig.setQQZone("100424468", "c7394704798a158208a74ab60104f0ba"); } private UMShareAPI umShareAPI; private static App app; public static App getApp(){ return app; } @Override public void onCreate() { super.onCreate(); app=this; x.Ext.init(this); x.Ext.setDebug(BuildConfig.DEBUG); //初始化sdk umShareAPI=UMShareAPI.get(this); } public UMShareAPI getUmShareAPI() { return umShareAPI; } }
2.6 MainActivity中
public class MainActivity extends AppCompatActivity implements View.OnClickListener { private ImageView image; private TextView name,city,gender,province; private Button login; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //点击按钮跳转到登录页面 login = (Button) findViewById(R.id.login); //需要显示的各个控件 image = (ImageView) findViewById(R.id.iconurl); name = (TextView) findViewById(R.id.name); city = (TextView) findViewById(R.id.city); gender = (TextView) findViewById(R.id.gender); province = (TextView) findViewById(R.id.province); login.setOnClickListener(this); } @Override public void onClick(View v) { App.getApp().getUmShareAPI().doOauthVerify(this, SHARE_MEDIA.QQ, new UMAuthListener() { @Override public void onStart(SHARE_MEDIA share_media) { Toast.makeText(MainActivity.this,"onStart",Toast.LENGTH_SHORT).show(); } @Override public void onComplete(SHARE_MEDIA share_media, int i, Map<String, String> map) { if(i==0){//判断i = 0,只是登录成功,但是获取不到数据 Toast.makeText(MainActivity.this,"登录成功",Toast.LENGTH_SHORT).show(); //获取信息 App.getApp().getUmShareAPI().getPlatformInfo(MainActivity.this, SHARE_MEDIA.QQ, this); } if(i==2){//当i=2/时,获取信息 login.setVisibility(View.GONE); String imageurl = map.get("iconurl");//头像 String nameString = map.get("name");//昵称 String genderString = map.get("gender");//男女 String cityString = map.get("city");//城市 String provinceString = map.get("province");//省份 x.image().bind(image,imageurl); name.setText(nameString); gender.setText(genderString); city.setText(cityString); province.setText(provinceString); } } @Override public void onError(SHARE_MEDIA share_media, int i, Throwable throwable) { Toast.makeText( getApplicationContext(), "Authorize fail", Toast.LENGTH_SHORT).show(); } @Override public void onCancel(SHARE_MEDIA share_media, int i) { Toast.makeText( getApplicationContext(), "Authorize cancel", Toast.LENGTH_SHORT).show(); } }); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); App.getApp().getUmShareAPI().onActivityResult(requestCode,resultCode,data);
2.7 布局文件中
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="activ.kuaikan.com.qq.MainActivity" android:orientation="vertical"> <Button android:id="@+id/login" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="QQ登录" android:layout_marginTop="40dp"/> <ImageView android:id="@+id/iconurl" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:id="@+id/gender" android:layout_width="match_parent" android:layout_height="wrap_content" /> <TextView android:id="@+id/city" android:layout_width="match_parent" android:layout_height="wrap_content" /> <TextView android:id="@+id/name" android:layout_width="match_parent" android:layout_height="wrap_content" /><TextView android:id="@+id/province" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout>
拓展
相关文章推荐
- 友盟第三方登录获取QQ的头像和昵称
- [置顶] Android使用友盟集成QQ、微信、微博等第三方登录
- 使用ShareSDK完成第三方(QQ、微信、微博)登录和分享
- 使用ShareSDK完成第三方(QQ、微信、微博)登录和分享
- Android使用友盟集成QQ、微信、微博等第三方登录
- Android使用友盟集成QQ、微信、微博等第三方分享与登录方法详解
- 使用ShareSDK完成第三方(QQ、微信、微博)登录和分享
- 使用QQ互联完成网站的QQ第三方登录(详解+坑)
- 使用MVP注册登录模块+封装的OKhttp,拦截器+QQ第三方登录+RecyclerView+SpringView上拉加载下拉刷新网络数据
- 友盟第三方登录获取QQ的头像和昵称
- 友盟第三方QQ登录和获取用户登录信息并设置用户头像
- QQ、新浪、微信使用友盟第三方登录需注意(5.0之前)
- [iOS常见问题] 关于使用QQ做第三方登录的问题!
- 分别嵌入 新浪微博、QQ、微信 做第三方授权登录 获取到头像 昵称等信息
- 使用QQ第三方登录时,手机应用和网站应用对同一个QQ号,获取到的openid不一样
- 公司网站如何让用户使用QQ第三方登录
- thinkPHP3.2.2使用thinkSDK实现第三方登录(以QQ登录)为例。
- QAuth2认证 -- ( 不使用友盟等 )自己实现第三方登录(UIWebView)、微博分享、等其他操作
- 关于使用QQ做第三方登录的问题!
- ShareSDK [iOS常见问题] 关于使用QQ做第三方登录的问题!