您的IE浏览器版本太低,请使用IE8.0以上版本或其他浏览器!
做一个阳光的人,让世界充满阳光!

b4a实现qq第三方登录功能

作者:Jin     发表时间:2018/03/07     阅读:     评论:1    

b4a本身没有直接连接qq第三方登录的功能,去年就写了这个库,说下用法

首先第三方登录功能要到,腾讯开放平台审请账号(http://open.qq.com/),创建一个新的应用,如果只是测试可以不用上线,到这一步就可以了

打开我新建立的”测试用看“


可以看到其中有三项是登录时需要用到的参数,APPID,APP KEY和包的名称


不审核的用户可以使用测试账号进行测试。


打开压缩包将library目录中的文件全选复制到b4a的安装目录中的Libraries中,一般是路径

C:\Program Files (x86)\Anywhere Software\Basic4android\Libraries。

打开b4a新建一个项目,找到qqlogin库先中


修改程序包名称为注册应用时起好的名称


新建变量


Sub Process_Globals
    These global variables will be declared once when the application starts.
    These variables can be accessed from all modules.
    Dim qqlogin As qqlogin
End Sub
新建按钮加到面板中

Sub Activity_Create(FirstTime As Boolean)

Dim but As Button
but.Initialize("but")
Activity.AddView(but,0,0,100%x,50%y)
End Sub

增加单击响应函数,函数中用到了appid将您的appid填写

Sub but_click
qqlogin.createactivity("qqlogin","1104949561")响应函数名和,appid
End Sub
新建登录的响应函数

Sub qqlogin_complte(mygetinfo As String)
Log(mygetinfo)
If mygetinfo.IndexOf("openid")>-1 Then
Dim myjson As JSONParser
myjson.Initialize(mygetinfo)
Dim map1 As Map
map1=myjson.NextObject
Log(map1)
Log("openid:" & map1.Get("openid"))
Log("access_tonken:" & map1.Get("access_token"))
Dim myjob As HttpJob
myjob.Initialize("qquserinfo",Me)
myjob.Download("https://graph.qq.com/user/get_user_info?access_token=" & map1.Get("access_token") & "&oauth_consumer_key=" & oauthkey & "&openid=" & map1.Get("openid") & "&format=json")
Else
Msgbox("登录失败,请重试","系统信息")
End If
Msgbox(mygetinfo,"")
End Sub
修改菜单 project->manifest editor 中代码


代码如下

This code will be applied to the manifest file during compilation.
You do not need to modify it in most cases.
See this link for for more information: https://www.b4x.com/forum/showthread.php?p=78136

AddApplicationText(

<activity android:name="com.qqlogin.qqloginActicity"
 android:theme="@style/MyDialogStyle">
 
</activity> 

        <activity
            android:name="com.tencent.connect.common.AssistActivity"
            android:configChanges="orientation|keyboardHidden"
            android:screenOrientation="portrait"
            android:theme="@android:style/Theme.Translucent.NoTitleBar" />
        <activity
            android:name=".ReturnActivity"
             >
        </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="tencent1104949561" />
  <!-- 100380359 100381104 222222 -->
            </intent-filter>
        </activity>
      
)

AddManifestText(
 <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <!-- SDK2.1新增获取用户位置信息 -->
    <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" />
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
    <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-sdk android:minSdkVersion="5" android:targetSdkVersion="19"/>
<supports-screens android:largeScreens="true" 
    android:normalScreens="true" 
    android:smallScreens="true" 
    android:anyDensity="true"/>)
SetApplicationAttribute(android:icon, "@drawable/icon")
SetApplicationAttribute(android:label, "$LABEL$")
End of default text.



注意代码中标红的部分需要改成自己的appid才可以。

另外<activity android:name="com.qqlogin.qqloginActicity"
 android:theme="@style/MyDialogStyle">中的android:theme="@style/MyDialogStyle"是为了增加窗口效果,作法是在程序目录中的Objects\res中增加“values"文件夹,然后在里面新建theme.xml内容为

<?xml version="1.0" encoding="utf-8"?>

<resources>
<style name="MyDialogStyle">
        <item name="android:windowBackground">@android:color/transparent</item>
        <item name="android:windowFrame">@null</item>  
      
        <item name="android:windowIsFloating">true</item> 
        <item name="android:windowIsTranslucent">true</item>
        <item name="android:windowContentOverlay">@null</item>
        <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
        <item name="android:backgroundDimEnabled">true</item>



</style>
</resources>



用来实现窗口效果

如果您不需要此效果可以直接改为<activity android:name="com.qqlogin.qqloginActicity"
>即可

到此程序布置完成,运行可以看效果了

我自己也写了代码放到百度云盘上大家共享,下载

https://pan.baidu.com/s/1fYMhHBIrkB4t1A_YgPcVFg

密码:6nvj

希望大家能用的上,共同交流


想说什么

*

*